Python 使用minidom获取xml标记之间的文本

Python 使用minidom获取xml标记之间的文本,python,xml,Python,Xml,我有这个示例xml文档片段 <root> <foo>bar</foo> <foo>baz</foo> </root> 酒吧 巴兹 我使用的是来自xml.dom的python的minidom方法。我正在阅读带有getElementsByTagName(“foo”)的标签。如何获取标签之间的文本?如果标签是嵌套的,我将如何获取这些标签?因此,如果需要获取文本,则可以执行以下操作: import xml.do

我有这个示例xml文档片段

<root>
    <foo>bar</foo>
    <foo>baz</foo>
</root>

酒吧
巴兹

我使用的是来自xml.dom的python的minidom方法。我正在阅读带有getElementsByTagName(“foo”)的标签。如何获取标签之间的文本?如果标签是嵌套的,我将如何获取这些标签?

因此,如果需要获取文本,则可以执行以下操作:

import xml.dom.minidom
document = "<root><foo>bar</foo><foo>baby</foo></root>"
dom = xml.dom.minidom.parseString(document)

def getText(nodelist):
    rc = []
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)

def handleTok(tokenlist):
    texts = ""
    for token in tokenlist:
        texts += " "+ getText(token.childNodes)
    return texts
foo = dom.getElementsByTagName("foo")
text = handleTok(foo)
print text
import xml.dom.minidom
document=“巴巴多斯”
dom=xml.dom.minidom.parseString(文档)
def getText(节点列表):
rc=[]
对于节点列表中的节点:
如果node.nodeType==node.TEXT\u节点:
rc.append(node.data)
返回“”。加入(rc)
def handleTok(令牌列表):
text=“”
对于令牌列表中的令牌:
text+=“”+getText(token.childNodes)
返回文本
foo=dom.getElementsByTagName(“foo”)
text=handleTok(foo)
打印文本
他们在网站上有一个很好的例子:

编辑:对于嵌套标记,请查看网站上的示例。

以下是如何使用:


有人仍在使用DOM,这让我很痛苦,请查看
xml.etree.ElementTree
@serk这是一个稍微不同的问题。您应该编辑此答案。代码示例格式不正确,无法工作。问题之一是
getElementsByTagName()
返回一个
NodeList
,它没有
data
属性。是的,我的错。我有点邋遢。现在一切都好了。是的,它起作用了。但是正如@mikerobi在上面所说的,
xml.etree.ElementTree
是这些天的发展方向。。。
xml='''\
<root>
    <foo>bar</foo>
    <foo>baz</foo>
</root>'''

import xml.etree.ElementTree as ET

for child in ET.fromstring(xml):
    print child.tag, child.text
foo bar
foo baz