我正在寻找一种在python中为xml标签添加属性的方法。或者使用新属性创建新标记 例如,我有以下xml文件:
<types name='character' shortName='chrs'>
....
...
</types>
我想添加一个属性,使它看起来像这样:
<types name='character' shortName='chrs' fullName='MayaCharacters'>
....
...
</types>
我如何用python做到这一点?顺便说说。我使用python和minidom 请帮忙。提前谢谢
答案 0 :(得分:5)
您可以使用相应Node
对象的attributes属性。
例如:
from xml.dom.minidom import parseString
documentNode = parseString("<types name='character' shortName='chrs'></types>")
typesNode = documentNode.firstChild
# Getting an attribute
print typesNode.attributes["name"].value # will print "character"
# Setting an attribute
typesNode.attributes["mynewattribute"] = u"mynewvalue"
print documentNode.toprettyxml()
最后一个print
语句将输出此XML文档:
<?xml version="1.0" ?>
<types mynewattribute="mynewvalue" name="character" shortName="chrs"/>
答案 1 :(得分:1)
我在this great article的python中学习了xml解析。它有一个属性部分,无法链接到,但只是在该页面上搜索“ Attributes ”,你会找到它,它包含你需要的信息。
但简而言之(从该页面上窃取的片段):
>>> building_element.setAttributeNS("http://www.boddie.org.uk/paul/business", "business:name", "Ivory Tower")
>>> building_element.getAttributeNS("http://www.boddie.org.uk/paul/business", "name")
'Ivory Tower'
您可能希望跳过名称空间的处理,以使代码更清晰,除非您需要它们。
答案 2 :(得分:0)
看起来你只需要为解析后的dom对象调用setAttribute
。
http://developer.taboca.com/cases/en/creating_a_new_xml_document_with_python/