python - 从 lxml 中的属性获取本地名称
问题描述
问题:
我可以在element.tag
没有命名空间的情况下使用lxml.etree.QName(element).localname
.
如何做类似的element.attrib
?
例子:
假设这个 XML 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="some_ns" xmlns:soc="some_other_ns" >
<someTag attr1="something" soc:attr2="something else"></someTag>
</root>
此脚本返回attrib
第二个属性的命名空间:
from lxml import etree
root = etree.parse('test.xml').getroot()
ns = { 'n':'some_ns', 'son':'some_other_ns' }
print ([e.attrib for e in root.xpath('./n:someTag', namespaces = ns)])
输出:
[{'{some_other_ns}attr2': 'something else', 'attr1': 'something'}]
解决方案
您也可以QName
用于属性。
tag = root.xpath('./n:someTag', namespaces = ns)[0]
for a, v in tag.attrib.items():
print(etree.QName(a).localname, v)
输出:
attr1 something
attr2 something else
推荐阅读
- python - 用两列在熊猫 groupby 中排序
- c# - 如何将使用 PrimaryKey 注释的属性添加到 Realm .NET 中现有的 RealmObject 模型对象?
- c++ - 在浅拷贝后调用析构函数会给出“Abort trap: 6”错误
- javascript - 如何在静态 Netlify 页面中使用环境变量
- python - 具有公共质心 Python 的双高斯拟合
- c - C程序不处理非数字键
- python - Bittorrent 和套接字:如何处理多条消息?
- angular - Creating click event of the buttons that are generated dynamically in angular flx-ui-datatable, in the actionButtons part
- java - 尝试隐藏视图时的 NPE (BottomNavigationView)
- android - 收到此错误**“错误:无法解决::sinch-android-rtc:+”**