下面是從.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