在Python中获取根节点的属性(命名空间)

时间:2019-07-05 09:01:04

标签: python xml xml-namespaces

我需要提取XML文件开头的命名空间。

看起来像这样。

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:a="CannotGetThisAttrib" xmlns:b="CannotGetThisAttrib">
<fileHeader c="CanGetThisAttrib/>>
<body></body>
<fooder/>
</root>

我可以提取根节点下的属性。但是,我无法获得根节点属性a和b,这是解析xml文件所必需的名称空间。

tree = ET.parse("xmlfile.xml")
root = tree.getroot()
root.attrib => None
root[0].attrib["c"] => CanGetThisAttrib

任何建议都值得赞赏。

1 个答案:

答案 0 :(得分:0)

此处(使用lxml)

from lxml import etree

data = '''<?xml version="1.0" encoding="UTF-8"?>
           <root xmlns:a="CannotGetThisAttrib" xmlns:b="CannotGetThisAttrib">
            <fileHeader c="CanGetThisAttrib"/>
            <body></body>
            <fooder/>
         </root>
    '''

data = data.encode('ascii')
tree = etree.fromstring(data)
for k,v in tree.nsmap.items():
    print('{} -> {}'.format(k,v))

输出

a -> CannotGetThisAttrib
b -> CannotGetThisAttrib