On Mon, Nov 28, 2011 at 03:58:56PM +0100, Alexander Hugestrand wrote:
> Hi,
> 
> I've had the following problem in both PHP and C++, and can't find
> any relevant information about this. It should be quite simple
> actually.
> 
> I am trying to parse an xml file, and my code works perfectly for
> all node types except DOCTYPE nodes. But I can't find any
> information about how to extract the information from it. Here is an
> example (my goal is to retrieve the strings "PublicIdentifier" and
> "URIreference"):
> 
> <?xml version="1.0" encoding="iso-8859-1"?>
> <!DOCTYPE test PUBLIC "PublicIdentifier" "URIreference">
> <test>
> </test>
> 
> Here is some code that illustrates my approach, using an
> xmlTextReader
> <http://www.xmlsoft.org/html/libxml-xmlreader.html#xmlTextReader>:
> 
> *while*(xmlTextReaderRead(myXmlReader) == 1) {
> // Why does xmlTextReaderNodeType() return an int and not an enum?
>         xmlReaderTypes nodeType =
> (xmlReaderTypes)xmlTextReaderNodeType(myXmlReader);
> *switch*(nodeType) {
> *case *XML_READER_TYPE_ELEMENT: /* Do something */ *break*;
> *case *XML_READER_TYPE_END_ELEMENT: /* Do something */ *break*;
> *case *XML_READER_TYPE_TEXT: /* Do something */ *break*;
> *case *XML_READER_TYPE_CDATA: /* Do something */ *break*;
> *case *XML_READER_TYPE_PROCESSING_INSTRUCTION: /* Do something */ *break*;
> *case *XML_READER_TYPE_COMMENT: /* Do something */ *break*;
>             // ...
> *case *XML_READER_TYPE_DOCUMENT_TYPE: {
> // What do I do here?

  Get the underlying xmlNodePtr
  http://xmlsoft.org/html/libxml-xmlreader.html#xmlTextReaderCurrentNode
make sure it's type is XML_DTD_NODE, and then cast it to a
xmlDtdPtr, then look at SystemID and ExternalID fields,

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

Reply via email to