在 ElementTree 中添加前缀属性

Posted

技术标签:

【中文标题】在 ElementTree 中添加前缀属性【英文标题】:Add prefixed attribute in ElementTree 【发布时间】:2013-05-27 18:01:03 【问题描述】:

我在 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】:

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

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

【讨论】:

以上是关于在 ElementTree 中添加前缀属性的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError: 'ElementTree' 对象在尝试导入 excel 文件时没有属性 'getiterator'

ElementTree XPath - 根据属性选择元素

python-23 xml.etree.ElementTree模块

Python不归路_xml.etree.ElementTree模块

如何使用 Python ElementTree 提取 xml 属性

如何在PowerShell中添加XML名称空间作为属性前缀?