在ElementTree中添加前缀属性

问题描述:

我正在操作ElementTree中的SVG文件。鉴于该文件test.svg在ElementTree中添加前缀属性

<?xml version='1.0' encoding='utf-8'?> 
<svg 
    xmlns="http://www.w3.org/2000/svg" 
    xmlns:xlink="http://www.w3.org/1999/xlink"> 
</svg> 

我试图与特定前缀创建一个元素

import xml.etree.ElementTree as ET 
ET.register_namespace("", "http://www.w3.org/2000/svg") 
tree = ET.parse('test.svg') 
tree.getroot().set("xmlns:xlink", "http://www.w3.org/1999/xlink") 
link = ET.fromstring('<a xlink:href="http://www.mysite.com/"></a>') 
tree.write('worldMap/test_out.svg', encoding = 'utf-8', xml_declaration = True) 

但碰上unbound prefix错误。我已经通过this tutorial看过,但不能完全看到有什么问题。

+0

所以什么问题? – enginefree

您必须声明xlink也串在其中与fromstring解析:

link = ET.fromstring('<a xmlns:xlink="http://www.w3.org/1999/xlink" ' 
        'xlink:href="http://www.mysite.com/"></a>') 
+0

完美,谢谢! – u003f