如何在Python中检索xml标记的属性?

时间:2010-02-09 09:40:46

标签: python xml tags

我正在寻找一种在python中为xml标签添加属性的方法。或者使用新属性创建新标记 例如,我有以下xml文件:

<types name='character' shortName='chrs'>
....
...

</types>

我想添加一个属性,使它看起来像这样:

<types name='character' shortName='chrs' fullName='MayaCharacters'>
....
...
</types>

我如何用python做到这一点?顺便说说。我使用python和minidom 请帮忙。提前谢谢

3 个答案:

答案 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/