我正在使用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打印出所有命名空间定义?
干杯, 维克多
答案 0 :(得分:0)
你拥有的是无效的xml(未定义的前缀),我认为你不能用xml.etree
执行此操作,但是你应该可以使用lxml
来完成。
import lxml.etree as et
tree = et.XML(yourxml)
print tree.nsmap