【问题标题】:Python XML Generation: Avoid multiple ns0 tag without lxmlPython XML 生成:避免多个没有 lxml 的 ns0 标签
【发布时间】:2015-01-09 10:19:35
【问题描述】:

我有一个 python 脚本,它简单地读取“input.xml”并复制到“output.xml”文件中。如“output.xml”所示,Python 的 Xpath 生成 ns0ns1 标签。如何在不使用其他 xml 库(例如 lxml)的情况下避免这些标签?

脚本:

import xml.etree.ElementTree as ET

fileName = "input.xml"

tree = ET.parse(template)
tree.write("output.xml")

输入.xml:

<Car>
     <brand xmlns = "www.car.com" xmlns:brand="www.bmw.com">
          <arg key="name" value="series 3" />
     </brand>
     <market xmlns = "www.ebay.com">
          <arg key="name" value="auto"/>
     </market>
</Car>

输出.xml:

<Car xmlns:ns0="www.car.com" xmlns:ns1="www.ebay.com">
     <ns0:brand>
          <ns0:arg key="name" value="series 3" />
     </ns0:brand>
     <ns1:market>
          <ns1:arg key="name" value="auto" />
     </ns1:market>
</Car>

【问题讨论】:

    标签: python xml xpath elementtree prefix


    【解决方案1】:

    恐怕没有简单的解决方案。

    在 Python 错误跟踪器中有一个 issue 与暂时未关闭的错误跟踪器相关。

    您可以尝试按照那里提出的解决方案,但看起来不是很清楚。

    我的建议是重新考虑使用lxml - 它为 XML 处理提供了真正的能力,Google AppEngine 包括了这一点。

    【讨论】:

    • 嗨 Jan,lxml 是否支持 python 3.4?
    • @Taewan 很好的问题。在我的 Linux 机器上,我毫无问题地安装了它 - lxml 的源代码声称“这个 lxml 版本需要 Python 2.6、2.7、3.2 或更高版本。”。这是使用源代码分发来编译它。在 Windows 上,您可以在 SO stackoverflow.com/questions/23944465/… 上关注此问题。无论如何,我多年来一直使用lxml 并强烈推荐它 - 克服可能的安装问题的努力很快就会得到回报。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2014-09-17
    • 2021-11-16
    • 2023-03-04
    • 2013-11-19
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多