XPath查询所有元素XML

时间:2018-10-03 19:41:46

标签: xml xpath

我不确定这样做是否可行,因为我正试图让XPath返回XML,但是我有一个示例文件:

<?xml version="1.0" encoding="utf-8"?>
<items xmlns="http://www.examples.com/itemsns">
    <item id="1" type="blue">
        <name>Item 1</name>
    </item>
    <item id="2" type="red">
        <name>Item 2</name>
    </item>
    <item id="3" type="red">
        <name>Item 3</name>
    </item>
</items>

我正尝试返回整个元素以供参考。客户端希望能够查看元素的原始XML,以对可能返回错误或不完整数据的XPath查询进行故障排除。

目标是让XPath以其原始形式返回整个元素:

<item id="2" type="red">
    <name>Item 2</name>
</item>

在单个XPath查询中甚至有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

XPath表达式选择源文档中的节点,并返回对这些节点的引用。所以是的,您可以返回整个节点。实际上,您不能返回部分节点。

现在,您显示为输出的不是节点,而是将节点序列化为词法XML。如果这就是您想要的,那么XPath无法交付它-至少要等到提供serialize(node)函数的XPath 3.1才能交付。在较早的发行版中,如果应用程序希望序列化节点,则它必须找到实现该目标的其他方法。大多数树模型(DOM,JDOM等)都提供了一些简单的序列化节点的方法,但是详细信息取决于您的宿主语言和树模型。