Thanks for the suggestion, but I was aware about that problem.
Adding a comment before the root node apparently doesn't break the code
at all:
<?xml version="1.0" encoding="UTF-8"?>
<!-- this is a comment -->
<Example agent="myclient">
<value1>aaa</value1>
</Example>
this one works fine.
Instead of iterating through nodes and testing for
xmlTextReaderNodeType(reader) I used the xmlTextReaderCurrentDoc /
xmlDocGetRootElement sequence because they should work anyway, no matter
how the XML is structured (and the code is much simpler).
Am I wrong?
I'd be very pleased if you could give me an XML example that you think
could really break my code.
SM
On 10/13/2014 11:32 AM, Daniel Veillard wrote:
> On Sat, Oct 11, 2014 at 02:16:31PM +0200, Spartaco wrote:
>> Well,
>> the simpliest solution I've found on my own is like that:
>>
>> xml = xmlReaderForFile("example.xml", NULL, 0);
>> xmlTextReaderRead(xml);
>> doc = xmlTextReaderCurrentDoc(xml);
>> root = xmlDocGetRootElement(doc);
>> agent = xmlGetProp(root, "agent");
>> ...
>>
>> and then proceed with the rest of parsing using the Reader interface, as
>> usual.
>> Do not forget to use xmlFreeDoc(doc) at the end of parsing.
> Well that's not 100% guaranteed to work, the xmlTextReaderRead()
> will scan through all nodes. If there is another node (not element)
> before the root node, like say a comment, you code will break.
> do Read() until you reach an element and use the reader
> to get the attribute.
>
> Daniel
>> On 10/11/2014 12:12 PM, Spartaco wrote:
>>> Hello guys,
>>>
>>> I'm just wondering if is there a simple way in LibXML2 to get an
>>> attribute value from the root node, preferably using the Reader interface.
>>> I have no problems at all with attributes from other nodes, they all are
>>> accessible by
>>> xmlTextReaderGetAttribute function, but root.
>>> Apparently LibXML2 discards root node attributes, or may be I'm missing
>>> something.
>>>
>>> Just to be clear, I intend to parse something like:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <Example agent="myclient">
>>> <value1>aaa</value1>
>>> </Example>
>>>
>>> and I'd like to get the value of the "agent" attribute.
>>> Can someone give me an hint?
>>>
>>> Regards
>>> SM
>>>
>>> _______________________________________________
>>> xml mailing list, project page http://xmlsoft.org/
>>> [email protected]
>>> https://mail.gnome.org/mailman/listinfo/xml
>>>
>> _______________________________________________
>> xml mailing list, project page http://xmlsoft.org/
>> [email protected]
>> https://mail.gnome.org/mailman/listinfo/xml
_______________________________________________
xml mailing list, project page http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml