2011-03-26 71 views
0

使用libxml時,從一個已解析的XML文件中訪問數據的位置在哪裏?訪問已解析的XML數據

這裏是xmlsoft

exampleFunc(const char *filename) { 
xmlParserCtxtPtr ctxt; /* the parser context */ 
xmlDocPtr doc; /* the resulting document tree */ 

/* create a parser context */ 
ctxt = xmlNewParserCtxt(); 
if (ctxt == NULL) { 
    fprintf(stderr, "Failed to allocate parser context\n"); 
return; 
} 
/* parse the file, activating the DTD validation option */ 
doc = xmlCtxtReadFile(ctxt, filename, NULL, XML_PARSE_DTDVALID); 
/* check if parsing suceeded */ 
if (doc == NULL) { 
    fprintf(stderr, "Failed to parse %s\n", filename); 
} else { 
/* check if validation suceeded */ 
    if (ctxt->valid == 0) 
    fprintf(stderr, "Failed to validate %s\n", filename); 
/* free up the resulting document */ 
xmlFreeDoc(doc); 
} 
/* free up the parser context */ 
xmlFreeParserCtxt(ctxt); 
} 

用法示例如何使用樹狀結構得到其中的數據?

回答

1

您可以通過兩種方式獲取數據。在上面的代碼中,您已經在您的變量doc(其類型爲:xmlDocPtr)中解析並準備好了xml文件。使用xmlDocPtr模塊中可用的函數,您可以迭代並移動xml並獲取適當的數據。另一種方法是使用XPath。該庫確實支持XPath,您可以使用它。

請參閱此示例:xpath1.c。這使用xpath來獲取數據。如果你知道你的XML,使用XPath將是獲取你需要的數據的簡單快捷的方法。

+0

謝謝。必須使用所有的代碼,還是隻能使用衆多功能之一? – jarryd 2011-03-28 17:53:08

+0

@ Helium3 ..我不知道你的xml,也沒有你需要的數據。您將不得不使用XPath。 – 2011-03-29 05:06:31