不包含子节点的 XPath 节点
XPath node that doesn't contain a child
我正在尝试使用 XML 访问某个元素,但我似乎无法获取它,而且我不太明白为什么。
<ul class="test1" id="content">
<li class="list">
<p>Insert random text here</p>
<div class="author">
</div>
</li>
<li class="list">
<p>I need this text here</p>
</li>
</ul>
基本上我想要的文本是第二个,但我want/need使用类似于 p[not(div)] 的东西来检索它。
我尝试了以下link中的方法,但无济于事(xpath find node that does not contain child)
以下是我尝试访问文本的方式:
ul[contains(@id,"content")]//p[not(.//div)]/text()
如果您有任何可能的答案,谢谢!
问题中发布的 HTML 代码段显示两个 p
元素 不包含 任何 div
,因此表达式 //p[not(.//div)]
将同时匹配 p
。第一个 p
元素 是 和 div
的兄弟元素(两者共享相同的父元素 li
),而不是父元素或祖先元素。以下 XPath 表达式将匹配来自第二个 p
的文本节点,而不是来自第一个
的文本节点:
//ul[contains(@id,"content")]/li[not(div)]/p/text()
简要说明:
//ul[contains(@id,"content")]
:查找 ul
个元素,其中 id
属性值包含文本“content”
/li[not(div)]
: 从这样的 ul
中找到没有子元素 div
的子元素 li
。这将仅匹配示例 HTML 中的结尾 li
/p/text()
:从这样的li
中找到子元素p
然后return子文本节点形成这样的p
我正在尝试使用 XML 访问某个元素,但我似乎无法获取它,而且我不太明白为什么。
<ul class="test1" id="content">
<li class="list">
<p>Insert random text here</p>
<div class="author">
</div>
</li>
<li class="list">
<p>I need this text here</p>
</li>
</ul>
基本上我想要的文本是第二个,但我want/need使用类似于 p[not(div)] 的东西来检索它。
我尝试了以下link中的方法,但无济于事(xpath find node that does not contain child)
以下是我尝试访问文本的方式:
ul[contains(@id,"content")]//p[not(.//div)]/text()
如果您有任何可能的答案,谢谢!
问题中发布的 HTML 代码段显示两个 p
元素 不包含 任何 div
,因此表达式 //p[not(.//div)]
将同时匹配 p
。第一个 p
元素 是 和 div
的兄弟元素(两者共享相同的父元素 li
),而不是父元素或祖先元素。以下 XPath 表达式将匹配来自第二个 p
的文本节点,而不是来自第一个
//ul[contains(@id,"content")]/li[not(div)]/p/text()
简要说明:
//ul[contains(@id,"content")]
:查找ul
个元素,其中id
属性值包含文本“content”/li[not(div)]
: 从这样的ul
中找到没有子元素div
的子元素li
。这将仅匹配示例 HTML 中的结尾 /p/text()
:从这样的li
中找到子元素p
然后return子文本节点形成这样的p
li