下面是从.svg文件的摘录(这是XML)找到SVG文件由“ID”字段元素:如何使用Python
<text
xml:space="preserve"
style="font-size:14.19380379px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
x="109.38555"
y="407.02847"
id="libcode-00"
sodipodi:linespacing="125%"
inkscape:label="#text4638"><tspan
sodipodi:role="line"
id="tspan4640"
x="109.38555"
y="407.02847">12345678</tspan></text>
我正在学习Python和不知道如何能我发现所有这样的text
元素的id
字段等于libcode-XX
,其中XX是一个数字。
我已经使用minidom的解析器加载了这个.svg文件,并尝试使用getElementById
来查找元素。但是我得到None
的结果。
svgTemplate = minidom.parse(svgFile)
print svgTemplate
print svgTemplate.getElementById('libcode-00')
后其他SO问题,我在没有运气svgTemplate
对象使用setIdAttribute('id')
试图去。底线:请提供一个巧妙的方式来提取所有这些text
元素的id
元素,其形式为libcode-XX
。之后,获取tspan
文本并将其替换为生成的内容应该没有问题。
如何用tspan元素替换文本(tp =“newtext”),然后使用此方法将修改的XML导出到新的SVG文件? Minidom有toxml()。 – 2010-03-02 07:28:37
您可以直接修改etree元素。您可以使用'etree.tostring(xmldata)'导出为新文件,如上面更新示例所示。 – MattH 2010-03-02 08:07:01
是否需要准备nsmap?我看到它被用在所有的表达式中。 – 2010-03-02 09:16:35