2
import xml.dom.minidom

water = """
<channel>
<item>
<title>water</title>
<link>http://www.water.com</link>
</item>
<item>
<title>fire</title>
<link>http://www.fire.com</link>
</item>
</channel>"""

dom=xml.dom.minidom.parseString(water)
linklist = dom.getElementsByTagName('link')
print (len(linklist))

使用 minidom,我想将链接和 /link 之间的内容作为字符串获取。请让我知道怎么做。

4

2 回答 2

2

如果您想坚持使用 xml.dom.minidom,只需调用 .firstChild.nodeValue。例如,您将链接存储在变量“linklist”中,因此要打印它们只需遍历它们并调用 .firstChild.nodeValue,就像这样......

for link in linklist:
    print link.firstChild.nodeValue

印刷...

http://www.water.com
http://www.fire.com

更详细的答案在这里.... 使用 Python 使用 minidom 获取元素值


回答您的另一个问题:
如果您想获取特定元素,您需要知道它在文档中的位置或搜索它。

例如,如果你知道你想要的链接是 xml 文档中的第二个链接,你会这样做......

# the variable fire_link is a DOM Element of the second link in the xml file
fire_link = linklist[1]

但是,如果您想要该链接但不知道它在文档中的位置,则必须搜索它。这是一个例子......

# fire_link is a list where each element is a DOM Element containing the http://www.fire.com link
fire_links = [l for l in linklist if l.firstChild.nodeValue == 'http://www.fire.com']

# take the first element
fire_link = fire_links[0]
于 2013-05-08T13:15:44.793 回答
1

这比看起来要复杂得多。从文档中的示例中,将其附加到您问题中的代码中:

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

text = getText(linklist[0].childNodes)
print text

我建议尝试代码所在elementtree模块

print linklist[0].text
于 2013-05-08T13:03:16.563 回答