使用 Python 的 lxml 通过 id 查找并替换 XML/SVG 元素文本?
我是 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 是否是在元素树中的任何位置查找元素的正确方法!?我很感激能朝正确的方向推动。
I'm new to XML and lxml and would like to use SVG as graphics template and programatically replace some elements (labels in the image).
For this, I have created an SVG file with Inkscape, however, lxml seems not to be able to handle the svg:namespaces used by Inkscape. Saving as plain SVG works:
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()")
But I am not sure whether xpath is the right method to find an element at any position in the element tree!? I'd appreciate a nudge in the right direction.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该能够使用
如果它不起作用,请向我们展示 SVG 标记。我不确定你所说的“保存为普通 SVG 有效”是什么意思。
You should be able to use
If it doesn't work, please show us the SVG markup. I'm not sure what you mean by "saving as plain SVG works".