【问题标题】:Xpath. How to specify a node between two nodes?Xpath。如何在两个节点之间指定一个节点?
【发布时间】:2015-04-25 22:10:14
【问题描述】:

可能有两种可能的结构:

1.

<c>TTTT</c>
<a>AAAA</a>
<b>BBBB</b>
<c>CCCC</c>
<d>DDDD</d>
<c>CCCC</c>

2.

<c>TTTT</c>
<a>AAAA</a>
<b>BBBB</b>
<d>DDDD</d>
<c>CCCC</c>

如何在第一种情况下选择&lt;b&gt;之后的节点&lt;c&gt;,如果是第二种情况,将其设置为null?

【问题讨论】:

  • 你能发一个xml/html的例子吗?
  • 我大体上同意 - 但是样本可以更容易地投入工具和测试结果,而不是假设用户架构和数据。或者我想太多了。
  • @Geohut Paxic 在正确格式化以显示 XML 示例的问题之前发表了评论,只是为了说明情况。此外,xpath 中的 "after b" 将是 b/following-sibling::someNode,这是完全可能的,尽管 2 个节点之间 有时是不可能的
  • @har07 谢谢 har 不记得那个了,我相信我是在它更新后立即发布的。

标签: xpath


【解决方案1】:

您可以为此使用following-sibling 轴:

//b/following-sibling::*[1][self::c]

简要说明:

  • b/following-sibling::*[1]:在&lt;b&gt;之后获得直接兄弟

  • [self::c]:检查该兄弟是否是&lt;c&gt;元素

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2014-02-01
    • 2018-02-14
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多