【问题标题】:Can't remove unecessary element from QName无法从 QName 中删除不必要的元素
【发布时间】:2020-06-29 08:35:55
【问题描述】:

我正在尝试在生成的 xml 中添加命名空间,因此我尝试了this 并提出了以下代码:

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”,所有命名空间都会消失。

你知道我怎样才能做到这一点吗?谢谢。

【问题讨论】:

    标签: python xml elementtree qnames


    【解决方案1】:

    我不知道如何处理 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

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多