2011-07-31 60 views
1

我是XML和lxml的新手,希望使用SVG作爲圖形模板並以編程方式替換某些元素(圖像中的標籤)。 爲此,我用Inkscape創建了一個SVG文件,但是,lxml似乎無法處理Inkscape使用的svg:命名空間。保存爲純SVG的工作原理:用Python的lxml查找並用id替換XML/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

xpath肯定是實現這一點的一種方法。 – jbeard4

回答

2

您應該能夠使用

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

如果它不能正常工作,請向我們展示了SVG標記。我不確定「保存爲簡單的SVG作品」是什麼意思。

+0

在Inkscape中「保存爲普通SVG」時,SVG元素中不使用任何名稱空間(不確定這是否是正確的單詞,例如用 moileroi