2012-06-22 2 views
2

Учитывая следующий XML:Как заменить текст внутри элемента XML?

<!-- file.xml --> 
<video> 
    <original_spoken_locale>en-US</original_spoken_locale> 
    <another_tag>somevalue</another_tag> 
</video> 

Что бы быть лучшим способом, чтобы заменить значение внутри от <original_spoken_locale> тега? Если бы я знал значение, я мог бы использовать что-то вроде:

with open('file.xml', 'r') as file: 
    contents = file.read() 
new_contents = contents.replace('en-US, 'new-value') 
with open('file.xml', 'w') as file: 
    file.write(new_contents) 

Однако, в данном случае, я не знаю, что значение будет.

ответ

8

Это довольно легко с ElementTree. Просто замените значение атрибута вашего элемента text:

>>> from xml.etree.ElementTree import parse, tostring 
>>> doc = parse('file.xml') 
>>> elem = doc.findall('original_spoken_locale')[0] 
>>> elem.text = 'new-value' 
>>> print tostring(doc.getroot()) 
<video> 
    <original_spoken_locale>new-value</original_spoken_locale> 
    <another_tag>somevalue</another_tag> 
</video> 

Это безопаснее, тоже, так как вы можете иметь en-US в других местах документа.

+0

Есть ли базовое решение для этого? – RanonKahn

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