On Sun, Aug 21, 2011 at 05:14:56PM +0200, Csaba Raduly wrote: > On Sun, Aug 21, 2011 at 10:58 AM, Tomáš Pospíšil wrote: > > Hello LibXML hackers, > > > > I'm using xmlReader for recursive pre order traversal throught XML tree. > > Everything works well, but during testing I faced problem with distinguish > > between > > > > <doc> > > <e1 /> > > <e1 ></e1> > > <doc>
> > both e1 elements are on same level, so I don't know after call > > xmlTextReaderRead() if isn't XML well formed or I have new node on same > > level. > > If xmlTextReaderRead returns 1, then the XML is well formed. > > > > > In short I have to know what type element is (short version <a />, or long > > <a> </a>), how can I accomplished that? Actually you should not. From an XML point of view the two are strictly equivalent. When I implemented the reader I found out that they distinguished the two and it made my life difficult, a parser is not supposed to expose the difference. If you have to rely on this, there is something broken. > For the short version, you'll get a XMLREADER_TYPE_ELEMENT. If you > call xmlReaderIsEmptyElement(), it will return 1. There will be no > XMLREADER_TYPE_END_ELEMENT. > For the long version, you'll get a XMLREADER_TYPE_ELEMENT > (xmlReaderIsEmptyElement() will return 0) and later a > XMLREADER_TYPE_END_ELEMENT. Unless you use the reader on an existing preparsed tree and in which case libxml2 discards the information and the difference can't be provided. Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ dan...@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ _______________________________________________ xml mailing list, project page http://xmlsoft.org/ xml@gnome.org http://mail.gnome.org/mailman/listinfo/xml