如何在Python中获取XML标签的属性?

2 投票
3 回答
743 浏览
提问于 2025-04-15 19:03

我想知道怎么在Python中给XML标签添加属性,或者创建一个带有新属性的新标签。比如,我有一个这样的XML文件:

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

</types>

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

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

请问我该怎么用Python做到这一点呢?顺便说一下,我是用Python和minidom来处理这个的。请帮帮我,谢谢!

3 个回答

0

看起来你只需要对解析后的DOM对象调用一下 setAttribute 方法就可以了。

http://developer.taboca.com/cases/en/creating_a_new_xml_document_with_python/

1

我在这篇很棒的文章中学会了如何在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'

如果你不需要处理命名空间,建议跳过这部分,这样代码会更简洁。

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"/>

撰写回答