【问题标题】:Prevent python xml.etree from using namespaces [duplicate]防止python xml.etree使用命名空间[重复]
【发布时间】:2022-01-24 14:53:44
【问题描述】:

我现在有一个问题让我有点生气,因为它真的不应该是一个问题,但我们开始吧:

我想在 python 中使用 xml.etree-library 修改一些 svg 图像,以便之后在 webapp 中显示它们。但是,当尝试仅解析图像然后使用 ElementTree.tostring 再次将它们作为字符串输出时,我注意到默认 ns0 命名空间被放在图像中的每个 xml-tag 前面,这导致我的浏览器无法当我将整个内容放入 html-doc 时解析 svg。

这是我的输入 svg 的示例:

<?xml version="1.0" standalone="yes"?>

<svg viewbox="0 0 400.0 400.0" xmlns="http://www.w3.org/2000/svg">
  <g>
    <ellipse cx="200.0" cy="200.0" rx="22.5" ry="15.0" fill="yellow" stroke="black" stroke-width="1"/>
    <text x="200.0" y="205.0" text-anchor="middle" font-size="12">aBool</text>
  </g>
</svg>

当现在做类似的事情时

svg = ElementTree.parse(<file>)
ElementTree.tostring(svg.getroot(), "unicode")

它吐出以下内容:

<ns0:svg xmlns:ns0="http://www.w3.org/2000/svg" viewbox="0 0 400.0 400.0">
  <ns0:g>
    <ns0:ellipse cx="200.0" cy="200.0" rx="22.5" ry="15.0" fill="yellow" stroke="black" stroke-width="1" />
    <ns0:text x="200.0" y="205.0" text-anchor="middle" font-size="12">aBool</ns0:text>
  </ns0:g>
</ns0:svg>

我唯一想要的是 ElementTree.tostring 函数不要将任何命名空间放入我的标签中。虽然我发现了很多关于如何在 xml.etree 中使用命名空间做一些更复杂的事情的信息,但似乎没有关于如何不使用它们的信息。这个图书馆不可能吗?如果是这样,我可以改用什么库?

【问题讨论】:

标签: python xml svg elementtree xml-namespaces


【解决方案1】:

正如 mzjn 所指出的,stackoverflow.com/a/68470618/407651 包含对我的问题的答案,它似乎正在工作。

【讨论】:

    猜你喜欢
    • 2020-09-20
    • 2017-01-07
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2014-03-31
    • 2016-04-15
    相关资源
    最近更新 更多