如何使用python从xml检索特定元素
问题描述:
我正在尝试阅读我正在获取的xml Feed,但无法访问特定元素。我正在使用python,并且python文档对于我应该使用的内容还不清楚。如何使用python从xml检索特定元素
这里是饲料:
<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 [email protected]&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
答
getElementsByTagName()
返回元素的列表。所以如果你想要第一个(或唯一)一个,你需要使用getElementsByTagName('name')[0]
。
但是,这是一个元素对象,而不是它所包含的文本(我认为你感兴趣)。
所以,你可能需要做这样的事情:
nametag = feedxml.getElementsByTagName('name')[0]
nametag.normalize()
name = nametag.firstChild.data
+0
这工作!谢谢。 – SachaK 2010-07-06 17:29:56
答
为了让你不得不做这样的事情的元素的文本:
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
为了澄清,我需要得到元素标签之间的文本。现在我收到以下内容: [,] –
SachaK
2010-07-06 17:25:38