我正在尝试阅读我正在阅读的xml Feed,但我无法访问特定元素。我正在使用python,而python文档实际上并不清楚我应该使用什么。
以下是Feed:
<title>More eagle</title>
<summary>http://www.181.fm/winamp.plsstation=181eagle&style=&description=The%20Eagle%20(Classic ...</summary>
<link rel="alternate" href="http://mail.google.com/mail account_id=example@gmail.com&message_id=12995390f36c310b&view=conv&extsrc=atom" type="text/html" />
<modified>2010-07-02T22:13:51Z</modified>
<issued>2010-07-02T22:13:51Z</issued>
<id>tag:gmail.google.com,2004:1340194246143783179 </id>
这是我目前的职能:
def parse_xml(feed):
feedxml = minidom.parseString(feed)
name = feedxml.getElementsByTagName('name')
subject = feedxml.getElementsByTagName('title')
contents = feedxml.getElementsByTagName('summary')
return name + "\n" + subject + "\n" + contents
答案 0 :(得分:1)
getElementsByTagName()
返回元素列表。因此,如果您想要第一个(或仅一个),则需要使用getElementsByTagName('name')[0]
。
但这是一个元素对象,而不是它所包含的文本(我认为你对此感兴趣)。
所以你可能需要做这样的事情:
nametag = feedxml.getElementsByTagName('name')[0]
nametag.normalize()
name = nametag.firstChild.data
答案 1 :(得分:1)
要获取元素的文本,您必须执行以下操作:
def getElementText(node, tagName):
for node in node.getElementsByTagName(tagName):
result = "" # handle empty elements
for tnode in node.childNodes:
if tnode.nodeType == tnode.TEXT_NODE:
result = tnode.data
return result
def parse_xml(feed):
feedxml = minidom.parseString(feed)
name = getElementText(feedxml,'name')
subject = getElementText(feedxml,'title')
contents = getElementText(feedxml,'summary')
return name + "\n" + subject + "\n" + contents