Re: How to parse xml containing optional elements
От | Hannes Erven |
---|---|
Тема | Re: How to parse xml containing optional elements |
Дата | |
Msg-id | 9b9c7d21-e6a0-5a26-f72f-901cd5afbd7c@erven.at обсуждение исходный текст |
Ответ на | Re: How to parse xml containing optional elements ("Andrus" <kobruleht2@hot.ee>) |
Список | pgsql-general |
Hi, > apt-get upgrade postgresql-9.1 returns > > Reading package lists... Done > Building dependency tree > Reading state information... Done > You might want to run 'apt-get -f install' to correct these. > The following packages have unmet dependencies: > openssl : Depends: libssl1.0.0 (>= 1.0.1e-2+deb7u5) but it is not > installable > wkhtmltox : Depends: libssl1.0.0 but it is not installable > E: Unmet dependencies. Try using -f. I'm afraid I cannot really help you with this. Is this with the postgresql.org repository already enabled? Did you run "apt-get update"? What about "apt-get upgrade" (a system-wide upgrade)? >> Be careful, this will only work when there is exactly one ns:Stmt >> element in the document. >> Else you will have to build a third query level, first selecting the >> ns:Stmt entries, second the IBAN and Ntry from them and third amount >> and EndToEndId. > > Hopefully there is only one Stmt element in single file. > I solved it by moving xpath to select IBAN to main select: > > SELECT > (xpath('/ns:Document/ns:BkToCstmrStmt/ns:Stmt/ns:Acct/ns:Id/ns:IBAN/text()', > xo,nsa))[1]::text AS endaaa, > (xpath('ns:Amt/text()', x,nsa))[1]::text::numeric AS tasusumma, > (xpath('ns:NtryDtls/ns:TxDtls/ns:Refs/ns:EndToEndId/text()', > x,nsa))[1] AS orderinr > > FROM ( > SELECT > unnest(xpath('/ns:Document/ns:BkToCstmrStmt/ns:Stmt/ns:Ntry', > x,nsa)) as x, nsa, x as xo > FROM t > ) Ntry > > This references endaaa from single select only. Changing code requires > changing only one line. > > Is this OK ? This will still select only the IBAN from the first statement in the file. -hannes
В списке pgsql-general по дате отправления: