在ElementTree中添加前缀属性

时间:2013-05-27 18:01:03

标签: python xml svg elementtree prefix

我在ElementTree中操作SVG文件。给定文件test.svg

<?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,但看不出有什么问题。

1 个答案:

答案 0 :(得分:0)

您必须在使用xlink解析的字符串中声明fromstring

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