为什么ElementTree无法正确解析此XML标签?

问题描述:

XML文件看起来是这样的:为什么ElementTree无法正确解析此XML标签?

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

<MINiML 
    xmlns="http://www.ncbi.nlm.nih.gov/geo/info/MINiML" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.ncbi.nlm.nih.gov/geo/info/MINiML http://www.ncbi.nlm.nih.gov/geo/info/MINiML.xsd" 
    version="0.5.0" > 

    <Contributor iid="contrib1"> 
    <Person><First>ENCODE</First><Last>DCC</Last></Person> 
    <Email>[email protected]</Email> 
    <Organization>ENCODE DCC</Organization> 
    <Address> 
     <Line>300 Pasteur Dr</Line> 
     <City>Stanford</City> 
     <State>CA</State> 
     <Zip-Code>94305-5120</Zip-Code> 
     <Country>USA</Country> 
    </Address> 
    </Contributor> 
</MINiML> 

这里是我如何使用ElementTree在Python:

import xml.etree.cElementTree as ET 
tree=ET.parse("the_file_above.xml") 
root = tree.getroot() 
for c in root: 
    print c.tag, c.attrib 

它返回:

{http://www.ncbi.nlm.nih.gov/geo/info/MINiML}Contributor {'iid': 'contrib1'} 

c.tag'{http://www.ncbi.nlm.nih.gov/geo/info/MINiML}Contributor' ,我预计是Contributor。我不确定如何混合在标签中的长URL。有没有人有关于此的想法?

+0

这是该标记来自的XML名称空间。我相信该库也有办法获得本地标签名称。 – Thilo

该库(和其他人一样)尝试将用于标记名称的名称空间编码。这是通过在花括号中加入命名空间来完成的。所以这只是一个你可能不知道的功能,对你来说可能很麻烦。但是,如果您将来自各种源的XML与各种名称空间混合,否则标签名称会发生​​冲突。