从XML移除ns0

use*_*293 7 python xml lxml

我有一个XML文件,我想在其中编辑某些属性。我能够正确地编辑属性,但是当我将更改写入文件时,标记上添加了一个奇怪的“ ns0”。我该如何摆脱呢?这是我尝试过但未成功的方法。我正在使用python并使用lxml。

    import xml.etree.ElementTree as ET
    from xml.etree import ElementTree as etree
    from lxml import etree, objectify
    frag_xml_tree = ET.parse(xml_name)
    frag_root = frag_xml_tree.getroot()

    for e in frag_root: 
        for elem in frag_root.iter(e):
            elem.attrib[frag_param_name] = update_val
        etree.register_namespace("", "http://www.w3.org/2001")
        frag_xml_tree.write(xml_name)
Run Code Online (Sandbox Code Playgroud)

但是,执行此操作时,只会收到错误“无效标签名称u”。如果xml标记以数字开头,我认为会出现此错误,但我的xml并非如此。我真的对如何继续执迷不悟。谢谢

use*_*293 9

实际上,方法似乎是两件事的结合。

  1. 导入语句是将xml.etree.ElementTree导入为ET
  2. ET.register_namespace(“”,NAMESPACE)是正确的调用,其中NAMESPACE是输入xml中列出的名称空间,即xmlns之后的URL。


Jos*_*eia 9

xml.etree.ElementTree这是仅使用而不是更正后的代码lxml

import xml.etree.ElementTree as ET
frag_xml_tree = ET.parse(xml_name)
frag_root = frag_xml_tree.getroot()

for e in frag_root: 
    for elem in frag_root.iter(e):
        elem.attrib[frag_param_name] = update_val
    ET.register_namespace("", "http://www.w3.org/2001")
    frag_xml_tree.write(xml_name)
Run Code Online (Sandbox Code Playgroud)