"Fossies" - the Fresh Open Source Software archive

Member "openvalidator-2.7.1/libxml2-2.6.28/doc/tutorial/ar01s03.html" of archive openvalidator_2.7.1.tar.gz:


Caution: In this restricted "Fossies" environment the current HTML page may not be correctly presentated and may have some non-functional links. Alternatively you can here view or download the uninterpreted source code. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.

Parsing the file

Parsing the file requires only the name of the file and a single function call, plus error checking. Full code: Appendix C, Code for Keyword Example

        1 xmlDocPtr doc;
	2 xmlNodePtr cur;

	3 doc = xmlParseFile(docname);
	
	4 if (doc == NULL ) {
		fprintf(stderr,"Document not parsed successfully. \n");
		return;
	}

	5 cur = xmlDocGetRootElement(doc);
	
	6 if (cur == NULL) {
		fprintf(stderr,"empty document\n");
		xmlFreeDoc(doc);
		return;
	}
	
	7 if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
		fprintf(stderr,"document of the wrong type, root node != story");
		xmlFreeDoc(doc);
		return;
	}

    

1

Declare the pointer that will point to your parsed document.

2

Declare a node pointer (you'll need this in order to interact with individual nodes).

4

Check to see that the document was successfully parsed. If it was not, libxml will at this point register an error and stop.

[Note]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.

5

Retrieve the document's root element.

6

Check to make sure the document actually contains something.

7

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.