Parsing the file requires only the name of the file and a single
function call, plus error checking. Full code: AppendixC, Code for Keyword Example
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc);
return;
}
if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
fprintf(stderr,"document of the wrong type, root node != story");
xmlFreeDoc(doc);
return;
}
| Declare the pointer that will point to your parsed document. |
| Declare a node pointer (you'll need this in order to
interact with individual nodes). |
| Check to see that the document was successfully parsed. If it
was not, libxml will at this point
register an error and stop.
| Note |
---|
One common example of an error at this point is improper
handling of encoding. The XML standard requires
documents stored with an encoding other than UTF-8 or UTF-16 to
contain an explicit declaration of their encoding. If the
declaration is there, libxml will
automatically perform the necessary conversion to UTF-8 for
you. More information on XML's encoding
requirements is contained in the standard. |
|
| Retrieve the document's root element. |
| Check to make sure the document actually contains something. |
| In our case, we need to make sure the document is the right
type. "story" is the root type of the documents used in this
tutorial. |