【发布时间】:2012-01-31 18:40:53
【问题描述】:
问题: XPath 1.0 表达式能否只返回 xml 节点的名称(无论是否合格)而不是整个节点? XPath 2.0 也可以吗?
详情:
我正在为 xml 元素节点的使用分析一系列格式良好的 xml 文档(即,获取跨多个 xml 文档的 xml 节点的聚合计数)。我有一个 perl 脚本,它检索每个文档的所需节点集,然后使用 XML::XPath::Node::Element->getName 遍历每个节点以获取节点名称的计数。我有一个替代实现来分析 xml 节点属性和文本值,但使用 XPath 语句来检索“原子值”(而不是在 perl 中使用 XML::XPath::Node::Element->getAttribute() 或类似的)。
[请注意,我意识到“原子值”实际上是一组属性/文本节点。]
当允许 XPath 表达式返回所需的“原子值”而不是在 perl 中循环结果时,我的性能提高了 50 倍,因此我想以类似于属性的方式检索 xml 节点名称 (即'attribute::'或'@')和文本(即'text()')节点。我查看了 XPath 和 XML 规范,但无法确定解决方案。
编辑:更具体地说,我正在寻找类似 @987654321@ 的东西,但它会为所有匹配节点返回一组名称(而不是只找到第一个节点)。
【问题讨论】: