2013-04-20 2 views
4

У меня есть XML-файл, где я хочу редактировать или переименовывать элементы и сохранять файл. Каков наилучший способ сделать это. XML-файл приведен нижеPython для переименования элементов XML

<breakfast_menu> 
<food> 
    <name>Belgian Waffles</name> 
    <price>$5.95</price> 
    <description>two of our famous Belgian Waffles with plenty of real maple syrup</description> 
    <calories>650</calories> 
</food> 
<food> 
    <name>Strawberry Belgian Waffles</name> 
    <price>$7.95</price> 
    <description>light Belgian waffles covered with strawberries and whipped cream</description> 
    <calories>900</calories> 
</food> 
<food> 
    <name>Berry-Berry Belgian Waffles</name> 
    <price>$8.95</price> 
    <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description> 
    <calories>900</calories> 
</food> 
<food> 
    <name>French Toast</name> 
    <price>$4.50</price> 
    <description>thick slices made from our homemade sourdough bread</description> 
    <calories>600</calories> 
</food> 
<food> 
    <name>Homestyle Breakfast</name> 
    <price>$6.95</price> 
    <description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description> 
    <calories>950</calories> 
</food> 
</breakfast_menu> 

Как изменить «описание» на «подробности»?

ответ

-2

У вас есть два варианта. Если xml невелик, замените обычную строку. Если xml очень большой, я бы посоветовал применить преобразование xsl.

+0

Почему downvoted? – Raj

+0

Это только часть более длинного файла. Как я могу преобразовать xsl с помощью python – user1138880

6

Я предлагаю вам использовать ElementTree для анализа XML-документа.

Это простая и лучшая библиотека для работы с документами XML в python.

Вот пример кода:

import xml.etree.ElementTree as xmlParser 
xmlDoc = xmlParser.parse('path to your xml doc') 
rootElement = xmlDoc.getroot() 

for element in rootElement.iter('description'): 
    element.tag = 'details' 

# Saving the xml 
xmlDoc.write('path to your new xml doc') 
+0

Как исправить неверный XML, где открытый тег и закрытие не совпадают. как в XML ниже – user1138880

0

Если ваш XML всегда будет оставаться в этом просто, вы можете использовать регулярные выражения:

import re 
xml = """ 
<breakfast_menu> 
... 
</breakfast_menu> 
""" 
regex = re.compile('<description>(.*)</description>') 
xml = regex.sub(r'<details>\1</details>',xml) 
+0

Как исправить неверный XML, где открытый тег и закрытие не совпадают. – user1138880

+0

Вы можете разбить регулярное выражение на две части для открывающего и закрывающего тега: 'открытие = re.compile ('')' 'clos = re.compile ('')'. Это заменит открытый тег, даже если нет закрывающего тега, но неправильный XML не будет автоматически восстановлен. В общем, не рекомендуется обрабатывать нерегулярную разметку с помощью регулярных выражений. Но регулярные выражения велики и очень эффективны, если вы абсолютно уверены, что ваш вход всегда будет следовать определенным правилам. –

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