From 35a201cc8ef0c3f5b2df88d2e528aabee1048348 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 30 Apr 2021 18:47:09 +0200 Subject: Initial/Final commit --- libxml2-2.9.10/doc/tutorial/ar01s04.html | 54 ++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 libxml2-2.9.10/doc/tutorial/ar01s04.html (limited to 'libxml2-2.9.10/doc/tutorial/ar01s04.html') diff --git a/libxml2-2.9.10/doc/tutorial/ar01s04.html b/libxml2-2.9.10/doc/tutorial/ar01s04.html new file mode 100644 index 0000000..11492eb --- /dev/null +++ b/libxml2-2.9.10/doc/tutorial/ar01s04.html @@ -0,0 +1,54 @@ +Retrieving Element Content

Retrieving Element Content

+Retrieving the content of an element involves traversing the document + tree until you find what you are looking for. In this case, we are looking + for an element called "keyword" contained within element called "story". The + process to find the node we are interested in involves tediously walking the + tree. We assume you already have an xmlDocPtr called doc + and an xmlNodPtr called cur.

+

+	1cur = cur->xmlChildrenNode;
+	2while (cur != NULL) {
+		if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
+			parseStory (doc, cur);
+		}
+		 
+	cur = cur->next;
+	}
+      

+ +

1

Get the first child node of cur. At this + point, cur points at the document root, which is + the element "story".

2

This loop iterates through the elements that are children of + "story", looking for one called "storyinfo". That + is the element that will contain the "keywords" we are + looking for. It uses the libxml string + comparison + function, xmlStrcmp. If there is a match, it calls the function parseStory.

+

+

+void
+parseStory (xmlDocPtr doc, xmlNodePtr cur) {
+
+	xmlChar *key;
+	1 cur = cur->xmlChildrenNode;
+	2 while (cur != NULL) {
+	    if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
+	3	    key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
+		    printf("keyword: %s\n", key);
+		    xmlFree(key);
+ 	    }
+	cur = cur->next;
+	}
+    return;
+}
+      

+

1

Again we get the first child node.

2

Like the loop above, we then iterate through the nodes, looking + for one that matches the element we're interested in, in this case + "keyword".

3

When we find the "keyword" element, we need to print + its contents. Remember that in XML, the text + contained within an element is a child node of that element, so we + turn to cur->xmlChildrenNode. To retrieve it, we + use the function xmlNodeListGetString, which also takes the doc pointer as an argument. In this case, we just print it out.

[Note]Note

Because xmlNodeListGetString allocates + memory for the string it returns, you must use + xmlFree to free it.

+

-- cgit v1.2.3