【问题标题】:libxml xmlXPathEvalExpression orderlibxml xmlXPathEvalExpression 顺序
【发布时间】:2026-02-10 11:55:01
【问题描述】:

我已经开始在C 中使用libxml,并且我正在使用xmlXPathEvalExpression 函数来评估XPath。

我的XML文件实际上代表一个表,每个子节点代表该表中的一行,其属性是对应的值,所以顺序很重要。

我找不到有关该函数的顺序的信息。它是否按文档顺序返回节点

例如,以下 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Root>
    <TABLE0>
      <Row Item0="1" Item1="2"/>
      <Row Item0="2" Item1="3"/>
      <Row Item0="3" Item1="4"/>
    </TABLE0>
    <TABLE1>
      <Row Item0="1" Item1="12"/>
      <Row Item0="6" Item1="15"/>
    </TABLE1>
</Root>

我能否确定在评估 /Root/TABLE0/* 并获取节点集后,调用 nodeSet-&gt;nodeTab[0] 将获得第一行,nodeSet-&gt;nodeTab[1] 将获得第二行,依此类推?

如果没有,有没有办法按文档顺序排序?

谢谢

【问题讨论】:

    标签: c xml xpath libxml2


    【解决方案1】:

    是的,使用xmlXPathEvalExpression 评估或使用xmlXPathCompile 编译的XPath 表达式的结果始终按文档顺序排序。 (在内部,它们是通过使用 true 排序标志调用 xmlXPathCompileExpr 来编译的。)

    【讨论】: