Используя BeautifulSoup версии 4 (bs4
), вы можете добиться того же самого путем обновления string
свойства напрямую:
from bs4 import BeautifulSoup
xml_data = """
<doc>
<test>test</test>
<foo:bar>Hello world!</foo:bar>
<parent>Hello <child>world!</child></parent>
</doc>
"""
soup = BeautifulSoup(xml_data)
make = soup.find('foo:bar')
make.string = 'Top of the world Ma!'
print make
# prints <foo:bar>Top of the world Ma!</foo:bar>
Этот подход хорошо работает для случая, когда элемент содержит другие элементы, и вы хотите заменить весь контент новым:
parent = soup.find('parent')
parent.string = 'Top of the world Ma!'
print parent
# prints <parent>Top of the world Ma!</parent>
Я наткнулся на этот довольно старый вопрос только сейчас, и предложенное решение не совсем подходит для меня. Дальнейшие исследования приводят меня к вышеупомянутому подходу, и я подумал, что, возможно, было бы полезно поделиться тем, что я в итоге использовал здесь.