D. *_*how 7 elementtree xml-namespaces xml-parsing python-3.x
我正在处理一些XML数据,这些数据在每个文件的某些位置重新定义了命名空间.我试图从文档中提取特定类型的所有标记,而不管标记位于XML中的活动名称空间是什么.
我正在findall('.//{namespace}Tag')
寻找我正在寻找的元素.但是永远不知道{namespace}
文件中任何给定点的内容是什么,会让它命中或遗漏我是否会返回所有请求的标签.
有没有办法返回所有Tag元素,无论{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)
Run Code Online (Sandbox Code Playgroud)
您的问题之前可能已被问过:lxml etree xmlparser 命名空间问题
归档时间: |
|
查看次数: |
881 次 |
最近记录: |