使用xmllib2 for C获取元素值

时间:2012-01-30 05:43:03

标签: c xml

我需要将一小段代码从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来提取标题吗?看起来像矫枉过正...... 请指教。

1 个答案:

答案 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]);
            }
        }
    }
}

呸!