如何在具有子节点的情况下获取XML节点的文本值

时间:2013-04-25 04:30:08

标签: python lxml

我有这样的场景:

<fetch>
   <xyz:match selector="ph-%"/>
   tools.build.compiler
</fetch>

现在XML节点<fetch>同时具有子节点和文本值。 我想提取<fetch>节点的文本值。 我使用python和Lxml来解析XML。 我使用了LXML的element.text,但我得到的文字值为None。 任何人都能说出我在做什么错误吗?

1 个答案:

答案 0 :(得分:1)

您需要孩子的tail成员。

def get_text(node):
    text = [node.text] + [child.tail for child in node]
    return ''.join(x for x in text if x is not None)

您使用的架构有点奇怪。 LXML旨在使用更传统的方式将数据编码为XML,虽然它支持一般的XML解析,.tail用法总是有点奇怪,除非你的架构很简单。