2013-12-08 3 views
2

У меня есть следующий XML:Как заменить значение атрибута в XML с помощью Python minidom

<country name="Liechtenstein"> 
    <rank>1</rank> 
    <year>2008</year> 
    <gdppc>141100</gdppc> 
    <neighbor direction="E" name="Austria"/> 
    <neighbor direction="W" name="Switzerland"/> 
</country> 

Я хочу, чтобы заменить значение «Лихтенштейн» с «Германией», так что результат должен выглядеть следующим образом:

<country name="Germany"> 
    <rank>1</rank> 
    <year>2008</year> 
    <gdppc>141100</gdppc> 
    <neighbor direction="E" name="Austria"/> 
    <neighbor direction="W" name="Switzerland"/> 
</country> 

до сих пор я до этого момента:

from xml.dom import minidom 
xmldoc = minidom.parse('C:/Users/Torah/Desktop/country.xml') 
print xmldoc.toxml() 
country = xmldoc.getElementsByTagName("country") 
firstchild = country[0] 
print firstchild.attributes["name"].value 
#simple string mathod to replace 
print firstchild.attributes["name"].value.replace("Liechtenstein", "Germany") 
print xmldoc.toxml() 
+0

Что у вас до сих пор? –

+0

Я могу получить доступ к значению, но не знаю, как его заменить. – Coddy

+0

Лучше включить код, который у вас есть, чтобы его можно было обновить/изменить, чтобы заменить значение. –

ответ

2

следующая строка фактически не изменить XML:

print firstchild.attributes["name"].value.replace("Liechtenstein", "Germany") 

Оно получает только значение, заменяет лихтенштейн Германией в этой строке и печатает эту строку. Он не изменяет значение в документе XML.

Вы должны присвоить новое значение непосредственно:

firstchild.attributes["name"].value = "Germany" 
+0

Я тоже не работаю. – Coddy

+0

@Coddy Я пробовал это, он действительно работает. Что не работает? –

2

линия Симеона делает работу.

В качестве альтернативы, вы можете сделать это:

firstchild.setAttribute('name', 'Germany') 

 Смежные вопросы

  • Нет связанных вопросов^_^