Re: How to parse xml containing optional elements
| От | Hannes Erven |
|---|---|
| Тема | Re: How to parse xml containing optional elements |
| Дата | |
| Msg-id | 8bd91192-71ac-2989-55c7-bd7115f0ad79@erven.at обсуждение исходный текст |
| Ответ на | How to parse xml containing optional elements ("Andrus" <kobruleht2@hot.ee>) |
| Ответы |
Re: How to parse xml containing optional elements
|
| Список | pgsql-general |
Hi Andrus,
> SELECT
> unnest(xpath('/ns:Document/ns:BkToCstmrStmt/ns:Stmt/ns:Ntry/ns:Amt/text()',
> x,nsa))::text::numeric AS tasusumma
> ,
> unnest(xpath('/ns:Document/ns:BkToCstmrStmt/ns:Stmt/ns:Ntry/ns:NtryDtls/ns:TxDtls/ns:Refs/ns:EndToEndId/text()',
> x,nsa))::text AS orderinr
> FROM t;
You need to extract all ns:Ntry elements first, and then get the amount
and EndToEndId for each of them:
SELECT
(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
FROM t
) Ntry
Best regards,
-hannes
В списке pgsql-general по дате отправления: