gpt4 book ai didi

python - lxml.etree 和 xml.etree.ElementTree 添加没有前缀的命名空间(ns0、ns1 等)

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:55 26 4
gpt4 key购买 nike

是否有任何解决方案可以添加不带前缀的命名空间(我的意思是这些 ns0、ns1),它们适用于所有 etree 实现,或者每个实现都有可行的解决方案?

目前我有以下解决方案:

  • lxml - 元素的 nsmap 参数
  • (c)ElementTree(python 2.6+) - 以空字符串作为前缀注册命名空间方法

问题是 python 2.5 中的 (c)ElementTree,我知道有 _namespace_map 属性但将其设置为空字符串会创建无效的 XML,将其设置为 None 添加默认的 ns0 等 namespace ,是否有任何可行的解决方案?

我猜

Element('foo', {'xmlns': 'http://my_namespace_url.org/my_ns'})

是个坏主意吗?

感谢帮助

最佳答案

我刚刚为您解决了问题。

定义你自己的前缀:

unique = 'bflmpsvz'

my_namespaces = {
'http://www.topografix.com/GPX/1/0' : unique,
'http://www.groundspeak.com/cache/1/0' : 'groundspeak',
}
xml.etree.ElementTree._namespace_map.update( my_namespaces )

然后,替换/删除输出中的前缀:

def writeDown(data, output_filename):

data.write(output_filename)
txt = file(output_filename).read()
txt = txt.replace(unique+':','')
file(output_filename,'w').write(txt)

可能有更好的解决方案。

关于python - lxml.etree 和 xml.etree.ElementTree 添加没有前缀的命名空间(ns0、ns1 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4428811/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com