2014-02-22 46 views
0

我想在python中使用xml.etree.ElementTree,但它適用於示例代碼,但不適用於我的其他代碼。無法在python中使用xml.etree.ElementTree

例: XML文件:程序工作罰款與此XML文件:

<?xml version="1.0"?> 
<data> 
    <country name="Liechtenstein"> 
     <rank>1</rank> 
     <year>2008</year> 
     <gdppc>141100</gdppc> 
     <neighbor name="Austria" direction="E"/> 
     <neighbor name="Switzerland" direction="W"/> 
    </country> 
    <country name="Singapore"> 
     <rank>4</rank> 
     <year>2011</year> 
     <gdppc>59900</gdppc> 
     <neighbor name="Malaysia" direction="N"/> 
    </country> 
    <country name="Panama"> 
     <rank>68</rank> 
     <year>2011</year> 
     <gdppc>13600</gdppc> 
     <neighbor name="Costa Rica" direction="W"/> 
     <neighbor name="Colombia" direction="E"/> 
    </country> 
</data> 

計劃:

import xml.etree.ElementTree as ET 
tree = ET.parse('country.xml') 
root = tree.getroot() 
for page in root.findall('country'): 
    print("inside") 

輸出:

inside 
inside 
inside 

這並未't w掃下面的程序:

XML文件:

import xml.etree.ElementTree as ET 
tree = ET.parse('sample.xml') 
root = tree.getroot() 
for page in root.findall('page'): 
    print("inside") 

輸出:No Output.

** 程序與下面的XML文件 **

<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.8/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.8/ http://www.mediawiki.org/xml/export-0.8.xsd" version="0.8" xml:lang="en"> 
    <siteinfo> 
    <sitename>Wikipedia</sitename> 
    <base>http://en.wikipedia.org/wiki/Main_Page</base> 
    <generator>MediaWiki 1.23wmf11</generator> 
    <case>first-letter</case> 
    <namespaces> 
     <namespace key="-2" case="first-letter">Media</namespace> 
    </namespaces> 
    </siteinfo> 
    <page> 
    <title>Affirming the consequent</title> 
    <ns>0</ns> 
    <id>675</id> 
    </page> 
</mediawiki> 

代碼工作方式

我想出了原因是由於0屬性標籤。但是我不能在我的示例數據中避開那個標籤。有沒有什麼可能的方式來完成這項工作。

+0

沒有,它仍然是相同的。當我從中刪除所有屬性,然後它處理。 – user1919035

回答

0

嘗試......

for page in root.findall('{mediawiki.org/xml/export-0.8}page'): 
    print(page) 
+0

第一個代碼是正確的。我不想顯示內容。在第二個XML文件中,我看不到任何輸出。 – user1919035

+0

嘗試'print tree.getchildren()'來查看包含xmlns的標籤的外觀。它會發出不推薦使用的警告,但應該產生標籤名稱。 – jeremyjjbrown

+0

它顯示子元素。嘗試看到第二個XML文件和程序。僅當我從MEDIAWIKI標籤中刪除所有屬性時,第二個程序纔有效。我在哪裏錯了? – user1919035