小编Sco*_*son的帖子

libxml2 和 XPath 在 ANSI C 中遍历子级和兄弟级

我已经在 Perl 中完成了相当多的 XML 工作,现在我需要在 ANDI C 中为一个项目完成这些工作。这是我用 XML 片段编写的代码。我在某种程度上取得了成功,但在获得兄弟姐妹方面遇到了问题,我确信这非常容易,但我就是无法得到它。有两个函数,第一个函数只是获取节点集(直接从 xmlsoft.org 复制)。第二个功能是我的。

xmlXPathObjectPtr getnodeset (xmlDocPtr doc, xmlChar *xpath){

    xmlXPathContextPtr context;
    xmlXPathObjectPtr result;

    context = xmlXPathNewContext(doc);
    if (context == NULL) {
        printf("Error in xmlXPathNewContext\n");
        return NULL;
    }

    result = xmlXPathEvalExpression(xpath, context);
    xmlXPathFreeContext(context);

    if (result == NULL) {
        printf("Error in xmlXPathEvalExpression\n");
        return NULL;
    }

    if(xmlXPathNodeSetIsEmpty(result->nodesetval)){
        xmlXPathFreeObject(result);
                printf("No result\n");
        return NULL;
    }

    return result;
}

    void reader(xmlDocPtr xmlDoc, char *xpath)
{

    xmlXPathObjectPtr xpathresult;
    xmlNodeSetPtr node;
    xmlNodeSetPtr node2;
    xmlChar *title;

    int cnt;

    // parse …
Run Code Online (Sandbox Code Playgroud)

c xpath libxml2

3
推荐指数
1
解决办法
5651
查看次数

标签 统计

c ×1

libxml2 ×1

xpath ×1