从XML中删除ns0

时间:2016-08-01 21:47:39

标签: 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)

然而,当我这样做时,我只会收到错误"无效的标记名称''"。如果xml标签以数字开头但我的xml不是这种情况,我想到了这个错误。我真的被困在如何继续。感谢

1 个答案:

答案 0 :(得分:6)

实际上,这样做的方式似乎是两件事的结合。

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