这个问题已经有了答案:
Create SVG / XML document without ns0 namespace using Python ElementTree [duplicate]
2答
我所要做的就是读取一个local.xml文件(将其编码为utf-8,使其具有正确的头,然后重新保存该文件)。但是,当我运行以下命令时,它会在每个xml元素中添加可怕的“ns0:”声明:

import xml.etree.ElementTree as ET
import sys, os

# note that this is the *module*'s `register_namespace()` function
# WTF THIS SHOULD WORK....
ET.register_namespace("", "http://www.w3.org/2000/svg")

tree = ET.ElementTree() # instantiate an object of *class* `ElementTree`
tree.parse('//cbweb1/inetpub/x/sitemap/sitemap_index.xml')

tree.write('//cbweb1/inetpub/x/sitemap/test.xml', encoding = 'utf-8', xml_declaration=True)

我做错什么了??
仅供参考,这是Python2.7.x(已尝试使用3.4)
编辑:
输入:
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>http://www.example.com/something.xml</loc>
    <lastmod>2014-05-01</lastmod>
  </sitemap>
</sitemapindex>

输出:
<?xml version="1.0" encoding="utf-8"?>
<ns0:sitemapindex xmlns:ns0="http://www.sitemaps.org/schemas/sitemap/0.9">
  <ns0:sitemap>
    <ns0:loc>http://www.example.com/something.xml</ns0:loc>
    <ns0:lastmod>2014-05-01</ns0:lastmod>
  </ns0:sitemap>
</ns0:sitemapindex>

最佳答案

如果原始输入中的默认命名空间为http://www.sitemaps.org/schemas/sitemap/0.9,则如所示:

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

如果你把它设置成
ET.register_namespace("", "http://www.w3.org/2000/svg")

您需要在http://www.sitemaps.org/schemas/sitemap/0.9的输出中声明一些其他名称空间。相反,您应该将其设置为相同的值:
ET.register_namespace("", "http://www.sitemaps.org/schemas/sitemap/0.9")

(或者,您可以尝试完全不将其设置为任何值;可能默认情况下,在输入中的输出中将使用相同的命名空间。)

关于python - 似乎无法删除“ns0:” namespace 声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23417466/

10-14 19:30