如何用Python的lxml按id查找并替换XML/SVG元素文本?

3 投票
1 回答
2809 浏览
提问于 2025-04-16 22:36

我刚接触XML和lxml,想用SVG作为图形模板,并且想通过编程的方式替换一些元素(图像中的标签)。为此,我用Inkscape创建了一个SVG文件,但lxml似乎无法处理Inkscape使用的svg命名空间。保存为普通的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是否是查找元素树中任何位置元素的正确方法!?如果能给我一点指引,我会非常感激。

1 个回答

3

你应该可以使用

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

如果这样不行,请把你的SVG代码发给我们。我不太明白你说的“保存为普通SVG可以”的意思。

撰写回答