2013-04-25 79 views
2

我的情況是這樣的:如何獲得XML節點的文本值時,它有子節點

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

現在XML節點<fetch>既有的子節點和文本值。 我想提取<fetch>節點的文本值。 我正在使用python和Lxml來解析XML。 我使用了LXML的element.text,但我將文本值設置爲None。 任何人都可以告訴我在做什麼錯誤嗎?

回答

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解析,但除非您的架構簡單明瞭,否則使用將始終有點奇怪。

+0

非常感謝。它解決了我的問題:-) – 2013-04-25 04:37:03