Как получить атрибуты тега XML в Python? - PullRequest
2 голосов
/ 09 февраля 2010

Я ищу способ добавить атрибуты к тегам xml в python. Или создать новый тег с новыми атрибутами например, у меня есть следующий XML-файл:

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

</types>

и я хочу добавить атрибут, чтобы он выглядел так:

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

как мне это сделать с python? Кстати. Я использую Python и минидом для этого пожалуйста помоги. заранее спасибо

Ответы [ 3 ]

5 голосов
/ 09 февраля 2010

Вы можете использовать атрибуты соответствующего объекта Node.

Например:

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 голос
/ 09 февраля 2010

Я изучил парсинг xml в python из этой замечательной статьи . У него есть раздел атрибутов, который не может быть связан с ним, но просто найдите « Атрибуты » на этой странице, и вы найдете его, который содержит необходимую вам информацию.

Но вкратце (фрагмент, украденный с указанной страницы):

>>> 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'

Возможно, вы захотите пропустить обработку пространств имен, чтобы сделать код чище, если только он вам не нужен.

0 голосов
/ 09 февраля 2010

Казалось бы, вы просто вызываете setAttribute для проанализированных объектов dom.

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

...