【问题标题】:Finding and replacing XML/SVG element text by id with Python's lxml?用 Python 的 lxml 通过 id 查找和替换 XML/SVG 元素文本?
【发布时间】:2011-10-16 20:43:48
【问题描述】:

我是 XML 和 lxml 的新手,想使用 SVG 作为图形模板并以编程方式替换一些元素(图像中的标签)。 为此,我使用 Inkscape 创建了一个 SVG 文件,但是,lxml 似乎无法处理 Inkscape 使用的 svg:namespaces。另存为纯 SVG 作品:

from lxml import etree
ifilename = "ifile.svg"
with open( ifilename, 'r') as infile: 
    tree = etree.parse( infile )
print tree.xpath("//text[@id='findme']/tspan/text()")

但我不确定 xpath 是否是在元素树中的任何位置查找元素的正确方法!?我会很感激朝着正确的方向轻推。

【问题讨论】:

  • xpath 无疑是实现这一目标的一种方式。

标签: python graphics svg lxml


【解决方案1】:

你应该可以使用

print tree.xpath("//n:text[@id='findme']/n:tspan/text()",
                 namespaces={'n': "http://www.w3.org/2000/svg"})

如果它不起作用,请向我们展示 SVG 标记。我不确定您所说的“另存为纯 SVG 作品”是什么意思。

【讨论】:

  • 在 Inkscape 中“另存为纯 SVG”时,SVG 元素中不使用命名空间(不确定这是否是正确的词,例如以 <svg:sodipodi.. 开头的标签),并且 lxml 不会退出有任何例外。谢谢你让我开始,我会寻找xpath方法。
猜你喜欢
  • 2017-05-02
  • 2020-08-08
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多