lxml::etree::_ElementStringResult.getparent() 工作不正常
我没有找到有人解释这个错误...
我正在使用 lxml 3.1.0。
当有这样的 HTML/XML 时:
<h1 class="fn"><strong class="brand">Lange</strong> XT 100 LV Ski Boots 2014</h1>
我们运行以下代码时,会返回字符串 " XT 100 LV Ski Boots 2014" 的 _ElementStringResult:
>> elemstr = tree.xpath('//body//h1/text()')[0]
但是,当我们这样运行时,就会得到...
>> parent = elemstr.getparent()
>> tree.getpath(parent)
/html/body/therestofthepath/h1/strong
有没有人遇到过类似的问题?有没有其他方法可以手动检查文本是否相同,或者检查父元素的文本子元素?
1 个回答
1
我觉得这是元素树(ET)正常的表现。原因在于元素树是如何表示文本节点的:只有作为元素第一个子节点的文本节点会用属性 text 来表示。
其他混合在一起的文本节点则被称为它们前面的兄弟节点的 tail,在这个例子中就是强元素的尾部。
import lxml.etree
xml = """<h1 class="fn"><strong class="brand">Lange</strong> XT 100 LV Ski Boots 2014</h1>"""
tree = lxml.etree.fromstring(xml)
elemstr = tree.xpath('//h1/text()')[0]
print elemstr.getparent().tail