[xml] XML beginner's question
- From: "Andrew M." <andrew mallberg vp44 com>
- To: xml gnome org
- Subject: [xml] XML beginner's question
- Date: Tue, 18 Nov 2008 12:24:32 +0100 (CET)
Hi all.
This is my first attempt at handling XML using libxml2.
My problem is very simple: I have a small XML file
<temper>
<actual>
<temp>9</temp>
<timestamp>18.11.2008 11:41:18</timestamp>
</actual>
</temper>
and I am trying to retrieve the "temp" value.
Reading on xmlsoft.org I found a good reference
(http://xmlsoft.org/tutorial/ar01s04.html) but when I try to implement it
all I get is a segfault.
Here's the code I got so far:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
void parseTemp (xmlDocPtr doc, xmlNodePtr cur) {
xmlChar *key;
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"temp"))) {
key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
printf("Temperature: %s\n", key);
xmlFree(key);
}
cur = cur->next;
}
return;
}
int main(int argc, char **argv) {
char *docname;
if (argc <= 1) {
printf("Usage: %s docname\n", argv[0]);
return(0);
}
docname = argv[1];
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL ) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"actual"))){
parseTemp (doc, cur);
}
cur = cur->next;
}
return (1);
}
Code runs fine without printf(), so I am supposing xmlNodeListGetString()
might be failing. Any suggestions?
Andrew M.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]