Python ElementTree - 打印出命名空间定义?

时间:2012-12-31 00:17:41

标签: python xml elementtree

我正在使用Python的elementtree来解析一些XML配置文件。

在文件的顶部,我有一个这样的根元素:

<?xml version="1.0" encoding="utf-8"?>
<sgx:FooConfig
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:foo="http://ns.au.firm.com/foo.xsd"
  xmlns:bar="http://ns.au.firm.com/bar.xsd"
  >

问题是,bar命名空间可以设置为两个不同的XSD之一,具体取决于配置文件的版本。

我正在寻找一种使用ElementTree打印命名空间映射的方法,所以我可以检查正在使用哪两个XSD - 然后我可以让我的代码来处理正确的情况。

有没有办法使用Python打印出所有命名空间定义?

干杯, 维克多

1 个答案:

答案 0 :(得分:0)

你拥有的是无效的xml(未定义的前缀),我认为你不能用xml.etree执行此操作,但是你应该可以使用lxml来完成。

import lxml.etree as et
tree = et.XML(yourxml)
print tree.nsmap