如何用Python的lxml按id查找并替换XML/SVG元素文本?
我刚接触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可以”的意思。