使用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);
}
树结构如何用于获取其中的数据?
答案 0 :(得分:1)
您可以通过两种方式获取数据。在上面的代码中,您已经在变量doc(它的类型为xmlDocPtr
)中解析并准备好了xml文件。使用xmlDocPtr模块中提供的函数,您可以迭代并遍历xml并获取适当的数据。另一种方法是使用XPath。该库确实支持XPath,您可以使用它。
请参阅此示例:xpath1.c。这使用xpath来获取数据。如果你知道你的xml,使用XPath将是一种简单快捷的方法来获取你需要的数据。