使用Python Etree解析XML并返回指定标签,无论命名空间如何
我正在处理一些 XML 数据,这些数据在每个文件的某些位置重新定义了命名空间。我试图从文档中提取特定类型的所有标签,而不管该标签驻留在 XML 中的命名空间处于活动状态。
我正在使用 findall('.//{namespace}Tag')
来查找我要查找的元素。但是永远不知道文件中任何给定点的 {namespace}
是什么,这使得我是否会返回所有请求的标签变得很困难。
有没有办法返回所有 Tag 元素,无论它们属于哪个 {namespace}
?类似于 findall('.//{wildcard}Tag')
的东西吗?
I am working with some XML data that, in some locations in each file, redefines the namespace. I'm trying to pull all tags of a specific type from the document regardless of the namespace that's active at the point where the tag resides in the XML.
I'm using findall('.//{namespace}Tag')
to find the elements I'm looking for. But never knowing what the {namespace}
will be at any given point in the file, makes it hit or miss whether I'll get all the requested Tags returned or not.
Is there a way to return all the Tag elements regardless of the {namespace}
they fall under? Something along the lines of findall('.//{wildcard}Tag')
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
lxml的xpath函数支持local-name()!
这是一个 Python 3 示例:
您的问题之前可能已被问过:lxml etree xmlparser 命名空间问题< /a>
The xpath function of lxml supports local-name()!
Here is a Python 3 example:
Your question might have been aswered before at: lxml etree xmlparser namespace problem