gpt4 book ai didi

xml - 使用 XPath 获取特定节点之前的所有内容

转载 作者:行者123 更新时间:2023-12-04 16:28:37 25 4
gpt4 key购买 nike

我得到了以下 XML 内容

<root>
<node1>Hi from node 1</node1>
text not encapsulated in node
<node2>Hi from node 2</node2>
<node3>content....<node3/>
</root>

问题是:如何获取 node3 之前的所有内容,即使是那些没有使用 XPath 1.0 或 2.0 版本封装在节点中的内容?

最佳答案

这个 XPath,

/root/node3/preceding-sibling::node()

将选择 node3 之前的所有节点,而不仅仅是元素:

   <node1>Hi from node 1</node1>
text not encapsulated in node
<node2>Hi from node 2</node2>

如果你真的想要之前所有兄弟节点的内容,see @DanielHaley's fine answer , 或使用(也是 XPath 2.0):

/root/node3/preceding-sibling::node()/string()

屈服:

    Hi from node 1 
text not encapsulated in node
Hi from node 2

使用 normalize-space() 代替 string() 来规范化空格:

 Hi from node 1 text not encapsulated in node Hi from node 2 

请注意,这些返回多个字符串(可能在上下文中连接),而 Daniel Haley 的 XPath 表达式将直接返回单个字符串,这可能是您想要的更直接的结果。

关于xml - 使用 XPath 获取特定节点之前的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57397463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com