【发布时间】:2020-01-15 11:25:07
【问题描述】:
我是 XPATH 的新手,想弄清楚如何从以下代码中选择标签:
<content>
<par>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>, T3C</par>
</content>
我可以使用以下 XPATH 选择第一个 <include.text> 标记://include.text[not(preceding-sibling::node())]。
对此我没问题(我需要这种方式来区分在 XML 中使用不同的 <include.text> 标记)。
那么我需要什么 XPATH 表达式:
1) 选择<linebreak> 标记的XPATH 表达式不是基于<par>(在这种情况下),而是基于紧随其后的<include.text>。我会想到这样的事情://include.text/preceding-sibling::linebreak 但它不起作用。
2) XPATH 表达式选择不紧跟<par> 的<include.text> 标记。我不能使用“没有前面的兄弟姐妹”(如上所述),因为有前面的兄弟姐妹。但是,我仍然需要能够区分在 XML 中不同位置使用的所有 <include.text> 标签(所以也没有 //include.text)。
注意:<par> 是任意的(也可以是另一个标签名称),所以我不能在 XPATH 中使用它。
我希望我已经清楚地解释了这一点。感谢您的帮助!
【问题讨论】:
-
另外,从这个问题和你的上一个问题来看,很明显,通过实现 XPath 在节点级别进行选择,包括 元素,你在这方面的理解和交流会得到改善>,不是开始或结束标签。
-
感谢您的反馈!我知道我还有很多关于 Xpath 的知识要学习,这有助于我理解。