访问已解析的xml数据

时间:2011-03-26 23:50:52

标签: xml parsing libxml2

使用libxml时,从解析的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 个答案:

答案 0 :(得分:1)

您可以通过两种方式获取数据。在上面的代码中,您已经在变量doc(它的类型为xmlDocPtr)中解析并准备好了xml文件。使用xmlDocPtr模块中提供的函数,您可以迭代并遍历xml并获取适当的数据。另一种方法是使用XPath。该库确实支持XPath,您可以使用它。

请参阅此示例:xpath1.c。这使用xpath来获取数据。如果你知道你的xml,使用XPath将是一种简单快捷的方法来获取你需要的数据。