python - 无法从 QName 中删除不必要的元素
问题描述
我正在尝试在我生成的 xml 中添加命名空间,所以我尝试了这个并想出了下面的代码:
from xml.etree import ElementTree as ET
NS1 = "http://www.w3.org/"
ET.register_namespace("xsi", NS1)
qname1 = ET.QName(NS1, "D") # Element QName
root = ET.Element("Database", {qname1:""},xmlns="http://www.staubli.com/")
print(ET.tostring(root).decode())
这段代码给了我
<Database xmlns:xsi="http://www.w3.org/" xsi:D="" xmlns="http://www.staubli.com/" />
而且我要
<Database xmlns:xsi="http://www.w3.org/" xmlns="http://www.staubli.com/">
所以我想摆脱xsi:D=""
. 但是,如果我从 QName 行中删除“D”,所有命名空间都会消失。
你知道我怎么能做到这一点吗?谢谢你。
解决方案
我不知道如何处理etree。这是另一个解决方案。
from simplified_scrapy import SimplifiedDoc
xml = '''<Database />'''
doc = SimplifiedDoc(xml)
root = doc.Database
root.setAttrs({"xmlns:xsi":"http://www.w3.org/","xmlns":"http://www.staubli.com/"})
print (doc.html) # <Database xmlns:xsi="http://www.w3.org/" xmlns="http://www.staubli.com/" />
# Or
xml = '''<Database></Database>'''
doc = SimplifiedDoc(xml)
root = doc.Database
root.setAttrs({"xmlns:xsi":"http://www.w3.org/","xmlns":"http://www.staubli.com/"})
print (doc.html) # <Database xmlns:xsi="http://www.w3.org/" xmlns="http://www.staubli.com/"></Database>
这里有更多例子:https ://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples/edit_element.py
推荐阅读
- python - 为什么 pandas.series.map 的速度如此之慢?
- android - 如何在android中十秒后禁用按钮?
- android - 从firebase数据库检索数据到getvalue中的listview null
- angular - 实例化 Angular 拦截器
- meteor - 在捆绑的流星应用程序上安装 nmp 失败
- three.js - 三.js OrbitControls。如何更新旋转相机?
- python - Pool().map:修改共享对象
- java - 变量初始化器是多余的
- javascript - 我将如何在这个对象数组上使用 _.mapKey
- r - 如何在r中绘制带有打开圆圈的折线图?