Html XPath选择两个标题之间的所有元素?
但这并不特定于所包含的文本,因此如果页面发生更改,那么xpath可能指向完全不同的内容 我希望sudo代码中的术语是: 给我标题Html XPath选择两个标题之间的所有元素?,html,xml,xpath,Html,Xml,Xpath,但这并不特定于所包含的文本,因此如果页面发生更改,那么xpath可能指向完全不同的内容 我希望sudo代码中的术语是: 给我标题'Headline 1'和 标题'Headline 2'包括'Headline 1' 这是可能的吗?如果尝试类似的方法会怎么样 //*[count(preceding-sibling::hr)=1] 将返回标题下的每个元素。你可以进一步缩小范围 //h2[contains(.,'Headline 1')]//* 对于段落文本,但不包括li元素。此XPath //h2
'Headline 1'
和
标题'Headline 2'
包括'Headline 1'
这是可能的吗?如果尝试类似的方法会怎么样
//*[count(preceding-sibling::hr)=1]
将返回标题下的每个元素。你可以进一步缩小范围
//h2[contains(.,'Headline 1')]//*
对于段落文本,但不包括li元素。此XPath
//h2[contains(.,'Headline 1')]//p
将选择字符串值为'Headline 1'
和'Headline 2'
的h2
s之间的所有元素:
//*[ preceding-sibling::h2[. = 'Headline 1']
and following-sibling::h2[. = 'Headline 2']]
还有一种方法:
//h2[. = 'Headline 1'] |
//*[ preceding-sibling::h2[. = 'Headline 1']
and following-sibling::h2[. = 'Headline 2']]
或者,可能是理想的方式:
//*[self::h2[. = 'Headline 1']
or ( preceding-sibling::h2[. = 'Headline 1']
and following-sibling::h2[. = 'Headline 2']]
因为它避免了两次指定
“Heading 1”
。在再次查看了我用于测试的HTML代码后,我现在意识到它位于。你显然是对的,谢谢你指出这一点。
<p>some text</p>
<p>some more text</p>
<ul>
<li>list item 1</li>
<li>list item 2</li>
</ul>
<p>more text</p>
//h2[. = 'Headline 1'] |
//*[ preceding-sibling::h2[. = 'Headline 1']
and following-sibling::h2[. = 'Headline 2']]
//*[self::h2[. = 'Headline 1']
or ( preceding-sibling::h2[. = 'Headline 1']
and following-sibling::h2[. = 'Headline 2']]
//h2[. = 'Headline 2']
/preceding-sibling::*[not(following-sibling::h2[. = 'Heading 1'])]