2010-07-06 84 views
0

我正在嘗試閱讀我正在獲取的xml Feed,但無法訪問特定元素。我正在使用python,並且python文檔對於我應該使用的內容還不清楚。如何使用python從xml檢索特定元素

這裏是飼料:

<title>More eagle</title> 
<summary>http://www.181.fm/winamp.plsstation=181eagle&amp;style=&amp;description=The%20Eagle%20(Classic ...</summary> 
<link rel="alternate" href="http://mail.google.com/mail [email protected]&amp;message_id=12995390f36c310b&amp;view=conv&amp;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

爲了澄清,我需要得到元素標籤之間的文本。現在我收到以下內容: [] – SachaK 2010-07-06 17:25:38

回答

1
getElementsByTagName() 

返回元素的列表。所以如果你想要第一個(或唯一)一個,你需要使用getElementsByTagName('name')[0]

但是,這是一個元素對象,而不是它所包含的文本(我認爲你感興趣)。

所以,你可能需要做這樣的事情:

nametag = feedxml.getElementsByTagName('name')[0] 
nametag.normalize() 
name = nametag.firstChild.data 
+0

這工作!謝謝。 – SachaK 2010-07-06 17:29:56

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 
相關問題