首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从XML中删除ns0

从XML中删除ns0
EN

Stack Overflow用户
提问于 2016-08-02 05:47:39
回答 2查看 8.6K关注 0票数 11

我有一个XML文件,我想在其中编辑某些属性。我能够正确地编辑属性,但是当我将更改写入文件时,标签上添加了一个奇怪的"ns0“。我怎么才能摆脱这个呢?这就是我尝试过的,但没有成功。我正在使用Python并使用lxml。

代码语言:javascript
复制
    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)

但是,当我这样做时,我只得到错误Invalid tag name u''。我以为如果xml标记以数字开头,就会出现这个错误,但我的xml并非如此。我真的被困在如何进行的问题上了。谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-08-02 06:26:06

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

导入语句为ET

  • ET.register_namespace("",命名空间)是正确的调用,其中是输入xml中列出的命名空间,即xmlns之后的url。
票数 11
EN

Stack Overflow用户

发布于 2020-02-11 01:24:54

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

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38708658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档