如何从xpath中排除子节点?
我有以下代码:如何从xpath中排除子节点?,xpath,Xpath,我有以下代码: <div class = "content"> <table id="detailsTable">...</table> <div class = "desc"> <p>Some text</p> </div> <p>Another text<p> </div> 问题是它选择了所有文本,包括“table”标记中的文本。我需要从xPat
<div class = "content">
<table id="detailsTable">...</table>
<div class = "desc">
<p>Some text</p>
</div>
<p>Another text<p>
</div>
问题是它选择了所有文本,包括“table”标记中的文本。我需要从xPath中排除“表”。我将如何实现这一点 XPath表达式
//div[@class=“content”]
选择div
元素-不多也不少-并应用string()
函数为您提供元素的字符串值,该值是其所有子代文本节点的串联
在XPath 1.0中,可能无法获取除包含在一个特定子级中的文本之外的所有文本。使用XPath2.0,它可以按如下方式完成
string-join(//div[@class="content"]/(node() except table)//text(), '')
但是对于这种操作,您实际上处于转换的领域,而不是纯粹的选择,因此您正在扩展XPath的设计范围。XPath 1.0解决方案:
substring-after(string(//div[@class="content"]),string(//div[@class="content"]/table))
或者使用concat:
concat(//table/following::p[1]," ",//table/following::p[2])
谢谢子字符串()按预期的那样执行。
concat(//table/following::p[1]," ",//table/following::p[2])