Python Can';t从QName中删除不必要的元素

Python Can';t从QName中删除不必要的元素,python,xml,elementtree,qnames,Python,Xml,Elementtree,Qnames,我试图在生成的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("Databas

我试图在生成的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>
从simplified_scrapy导入SimplifiedDoc
xml=“”“
doc=SimplifiedDoc(xml)
root=doc.Database
root.setAttrs({“xmlns:xsi”:”http://www.w3.org/,“xmlns”:http://www.staubli.com/"})
打印(doc.html)#
#或
xml=“”“
doc=SimplifiedDoc(xml)
root=doc.Database
root.setAttrs({“xmlns:xsi”:”http://www.w3.org/,“xmlns”:http://www.staubli.com/"})
打印(doc.html)#
以下是更多的例子: