Python 通过XPath选择给定类型的第一组连续子元素
我认为最好用一个例子来说明这个问题。让我们假设以下输入:Python 通过XPath选择给定类型的第一组连续子元素,python,xml,xpath,Python,Xml,Xpath,我认为最好用一个例子来说明这个问题。让我们假设以下输入: <div id='content'> <h1></h1> <h3></h3> <p>a</p> <p>b</p> <p>c</p> <div><p>x</p></div> <p>d</p&
<div id='content'>
<h1></h1>
<h3></h3>
<p>a</p>
<p>b</p>
<p>c</p>
<div><p>x</p></div>
<p>d</p>
<h2></h2>
<p>e</p>
</div>
虽然我想知道是否有更“惯用”的解决方案来解决这个问题,但它似乎或多或少起作用了。这看起来是惯用的w.r.t XPath
from lxml import etree
tree = etree.fromstring(r'''
<div id='content'>
<h1></h1>
<h3></h3>
<p>a</p>
<p>b</p>
<p>c</p>
<div><p>x</p></div>
<p>d</p>
<h2></h2>
<p>e</p>
</div>
''')
q=r'''
/div[@id="content"]/p[count(preceding-sibling::*[not(self::p)])
=
count(/div[@id="content"]/p[1]/preceding-sibling::*)]
'''
for el in tree.xpath(q):
print(el.text)