使用Python的lxml通过id查找和替换XML / SVG元素文本?

时间:2011-07-31 10:33:54

标签: python graphics svg lxml

我是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 个答案:

答案 0 :(得分:2)

你应该可以使用

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

如果不起作用,请向我们展示SVG标记。我不确定你的意思是“保存为普通的SVG工作”。