Я строки XML как следующее:Rewrite XML и сохранить контекст
xml = """
<body>
<head>1. Un livre sur <persName type="author" key="Ronsard, Pierre de (1524-1585)" ref="http://www.idref.fr/027107957">Ronsard</persName></head>
<head>2. <title>La pitié des églises</title> par <persName key="Barrès, Maurice (1862-1923)" ref="http://www.idref.fr/026706601" type="author">Barrès</persName></head>
</body>
"""
Я некоторая функция называется processLine(line)
, что занимает целую строку (текст в <head>
без тегов), в моем случае эти две строки будет обработаны processLine
функции:
1. Un livre sur Ronsard
2. La pitié des églises par Barrès
и конкатенация определенной строки в некоторые слова каждой строки, например:
"Ronsard" becomes "Ronsard I-PER"
"Barrès" becomes "Barrès I-PER"
Вот код, который я сделал до сих пор, используя библиотеку etree Питона:
from lxml import etree
root = etree.fromstring(xml)
pars = root.xpath('//body//head')
for par in pars:
line = par.text # return the line stripped from tags
processLine(line)
Мой вопрос: Как я могу сохранить эти изменения в файле XML, без потери его структуры?
то есть: Мой новый файл XML в моем Exemple будет:
newxml = """
<body>
<head>1. Un livre sur <persName type="author" key="Ronsard, Pierre de (1524-1585)" ref="http://www.idref.fr/027107957">Ronsard I-PER</persName></head>
<head>2. <title>La pitié des églises</title> par <persName key="Barrès, Maurice (1862-1923)" ref="http://www.idref.fr/026706601" type="author">Barrès I-PER</persName></head>
</body>
"""