所以我希望使用lxml和python从树中获取所有文本,如下所示:
provider.getAccount().getName()
这里的挑战是我只想要Text标签中存在的文本,而不是像其他标签一样存在于其他标签中的文本。我需要一种方法来迭代Body中的所有节点,然后组合来自节点的文本。这行代码让我非常接近我想要的,但也从其他标签中获取文本。所以我需要一种方法来清除我想要的文本。
<Body>
<X1>
<Text>some text</Text>
<Other>text I don't want</Other>
</X1>
<X2>
<Text>some text</Text>
<Other>text I don't want</Other>
</X2>
再次使用上面的树和代码输出是: “一些文字文字我不想要一些我不想要的文字文字” 我需要: “有些文字有些文字”
提前感谢所有帮助!
答案 0 :(得分:2)
一个简单的xpath语句应该
>>> text="""<Body>
... <X1>
... <Text>some text</Text>
... <Other>text I don't want</Other>
... </X1>
... <X2>
... <Text>some text</Text>
... <Other>text I don't want</Other>
... </X2>
... </Body>"""
>>>
>>> import lxml.etree
>>> doc = lxml.etree.fromstring(text)
>>> ' '.join(e.text for e in doc.xpath('//Text'))
'some text some text'