问题解析XML
问题描述:
您好我有xml文件whitch我想分析,它看起来像这样问题解析XML
<?xml version="1.0" encoding="utf-8"?>
<SHOP xmlns="http://www.w3.org/1999/xhtml" xmlns:php="http://php.net/xsl">
<SHOPITEM>
<ID>2332</ID>
...
</SHOPITEM>
<SHOPITEM>
<ID>4433</ID>
...
</SHOPITEM>
</SHOP>
我的解析代码是
from lxml import etree
ifile = open('sample-file.xml', 'r')
file_data = etree.parse(ifile)
for item in file_data.iter('SHOPITEM'):
print item
,但产品的打印,只有当XML容器
<SHOP xmlns="http://www.w3.org/1999/xhtml" xmlns:php="http://php.net/xsl">
看起来像
<SHOP>
我该如何解析xml文档而不用担心这个容器定义?
答
有关lxml.etree如何处理命名空间的说明,请参阅here。一般来说,你应该与他们合作,而不是试图避免它们。在这种情况下,写:
for item in file_data.iter('{http://www.w3.org/1999/xhtml}SHOPITEM'):
如果你需要经常提到的命名空间,设置一个局部变量:
xhtml_ns = '{http://www.w3.org/1999/xhtml}'
...
for item in file_data.iter(xhtml_ns + 'SHOPITEM'):