Re: BUG #16332: The xmltable function returns 'comment()' as unusablexml appended together and having no xml tags - Mailing list pgsql-bugs

From Pavel Stehule
Subject Re: BUG #16332: The xmltable function returns 'comment()' as unusablexml appended together and having no xml tags
Date
Msg-id CAFj8pRCZ4wimhoPooJwtfhzW8c+5z1S6=M4hdbT-cj2zs1n3PA@mail.gmail.com
Whole thread Raw
In response to BUG #16332: The xmltable function returns 'comment()' as unusable xml appended together and having no xml tags  (PG Bug reporting form <noreply@postgresql.org>)
List pgsql-bugs


st 1. 4. 2020 v 18:07 odesílatel PG Bug reporting form <noreply@postgresql.org> napsal:
The following bug has been logged on the website:

Bug reference:      16332
Logged by:          David Sisson
Email address:      david_sisson@dell.com
PostgreSQL version: 11.6
Operating system:   Windows 10
Description:       

please, check Postgres 12. This issue is fixed there

Regards

Pavel


We are trying to use the new faster "xmltable" feature in PostgreSQL to read
XML files.
We have to be able to read and parse commented out sections of the xml
files.
Without being able to read and parse XML comments we won't be able to use
this.

(full sample below)

When using this:  comments xml path 'comment()'

We are getting this: 
&lt;Attribute Name="Test Comment 001"&gt;Testing comment
001&lt;/Attribute&gt;  &lt;Attribute Name="Test Comment 002"&gt;Testing
comment 002&lt;/Attribute&gt;  &lt;Attribute Name="Test Comment
002"&gt;Testing comment 003&lt;/Attribute&gt;"


As with everything else I would have expected to get the result as readable
xml.


It works for elements just not for comments.
For example this:    attribute_xml xml path 'Attribute/self::node()',

Returns this which we can use.
"<Attribute Name="TestAttribute001">attribute element value
001</Attribute><Attribute Name="TestAttribute002">attribute element value
002</Attribute><Attribute Name="TestAttribute003">attribute element value
003</Attribute>"


with
_xml(raw_xml) as
(
        select
        '
        <SystemConfiguration Model="Test01">

        <Component Name="Test 001">
         <Attribute Name="TestAttribute001">attribute element value
001</Attribute>
         <Attribute Name="TestAttribute002">attribute element value
002</Attribute>
         <!--  <Attribute Name="Test Comment 001">Testing comment
001</Attribute>-->       
         <!--  <Attribute Name="Test Comment 002">Testing comment
002</Attribute>-->
         <!--  <Attribute Name="Test Comment 002">Testing comment
003</Attribute>-->
         <Attribute Name="TestAttribute003">attribute element value
003</Attribute>
        </Component>
        </SystemConfiguration>
        '::xml
),
_components(name, attribute_xml, comment_xml) as
(
        select
                root_components.fqdd,
                root_components.attribute_xml,
                root_components.comments
        from
                _xml,                   
                xmltable
                (
                        '//SystemConfiguration/Component'
                        passing raw_xml
                        columns
                                fqdd text path '@Name',
                                attribute_xml xml path 'Attribute/self::node()',
                                comments xml path 'comment()'
                ) as root_components


)
select * from _components

pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #16332: The xmltable function returns 'comment()' as unusable xml appended together and having no xml tags
Next
From: Jehan-Guillaume de Rorthais
Date:
Subject: Re: [BUG] non archived WAL removed during production crash recovery