我需要将一小段代码从PHP移植到C,它提取杂项元素的值,这些元素可以按照XML树中的级别的任何顺序排列。示例XML文档是:
<book>
<author>John Smith</author>
<title>A Marvelous Book</title>
</book>
在PHP中,提取标题的代码是:
$xmlDoc = new SimpleXMLElement($xmlStr);
$title = $xmlDoc->title;
对于C我将使用libxml2(其中我不熟悉)。到目前为止,我有:
xmlDoc = xmlReadMemory(xmlStr, strlen(xmlStr), "noname.xml", NULL, 0);
现在怎样?我应该使用XPATH来提取标题吗?看起来像矫枉过正...... 请指教。
答案 0 :(得分:1)
所以我最终做的,例如提取标题,是:
if (xpathCtx = xmlXPathNewContext(doc)) {
if (xpathObj = xmlXPathEvalExpression("//title[1]", xpathCtx)) {
if (nodes = xpathObj->nodesetval) {
if ((nodes->nodeNr == 1) && (nodes->nodeTab[0]->type == XML_ELEMENT_NODE)) {
value = xmlNodeGetContent(xpathObj->nodesetval->nodeTab[0]);
}
}
}
}
呸!