使用Python Etree解析XML并返回指定的标记而不考虑命名空间
我正在使用一些XML数据,在每个文件的某些位置重新定义名称空间。 我试图从文档中提取特定类型的所有标签,而不管在标签驻留在XML中的哪个活动的名称空间。
  我使用findall('.//{namespace}Tag')来查找我正在查找的元素。  但是永远不知道{namespace}在文件中的任何给定位置会是什么,使它碰到或错过我是否将所有请求的标签返回。 
  有没有办法返回所有标签元素,而不管它们属于哪个{namespace} ?  findall('.//{wildcard}Tag') ? 
lxml的xpath函数支持local-name()!
这里是一个Python 3的例子:
import io
from lxml import etree
xmlstring = '''<root
xmlns:m="http://www.w3.org/html4/"
xmlns:n="http://www.w3.org/html5/">
<m:table>
  <m:tr>
    <m:name>Sometext</m:name>
  </m:tr>
</m:table>
<n:table>
  <n:name>Othertext</n:name>
</n:table>
</root>'''
root = etree.parse(io.StringIO(xmlstring))
names = root.xpath("//*[local-name() = 'name']")
for name in names:
    print(name.text)
您的问题可能在之前已经回答了:lxml etree xmlparser命名空间问题
链接地址: http://www.djcxy.com/p/10077.html上一篇: Parse XML with Python Etree and Return Specified Tag Regardless of Namespace
下一篇: Consuming local EJB, in the same Container but different ears
