如何从lxml的根元素获取XML前缀声明

时间:2014-12-03 09:31:03

标签: python xml lxml xml-namespaces objectify

的test.xml:

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://example.com" xmlns:foo="http://example.com/bar">
  <foo:Child>yikes</foo:Child>
</Root>

test.py:

from lxml import objectify
root = objectify.fromstring(file('test.xml').read())
print root.attrib

输出:

{}

如何获取前缀声明?即类似的东西:

{
  "xmlns": "http://example.com",
  "xmlns:foo": "http://example.com/bar"}

更新:

root.keys()root.items()root.values()分别产生[][]{}

2 个答案:

答案 0 :(得分:2)

Element个对象有一个名为nsmap的属性,它包含元素上下文的所有已知命名空间。在tutorial中提到。

>>> root.nsmap
{None: "http://example.com", "foo": "http://example.com/bar"}

答案 1 :(得分:0)

import xml.etree.ElementTree as ET
tree = ET.parse("test.xml")
root = tree.getroot()
print(root.attrib)

输出:

  

{'xmlns':'http://example.com''xmlns:foo'='http://example.com/bar'}

希望有所帮助