我是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是否是在元素树中的任何位置找到元素的正确方法!?我很欣赏在正确方向上的推动。
答案 0 :(得分:2)
你应该可以使用
print tree.xpath("//n:text[@id='findme']/n:tspan/text()",
namespaces={'n': "http://www.w3.org/2000/svg"})
如果不起作用,请向我们展示SVG标记。我不确定你的意思是“保存为普通的SVG工作”。