Я пытаюсь программно работать с настольным файлом Tableau (который является просто XML-файлом, несмотря на расширение .twb). У меня много проблем с lxml, который не сохраняет оригинальный контент. Чтобы облегчить объяснение, представьте, что у вас есть файл test.xml, который содержит следующий текст:
<column caption='Choix Découpage' name='[Aujourd'Hui Parameter (copy 2)]'>
<member name='Nb d'annulations' default-format='n#,##0.00" annulations";-#,##0.00" annulations"' />
<run> :</run>
<calculation formula='iif([FAC_TYPE] = 'Avoir' , [Calculation_1378101492427309057], null)' />
<alias key='"Billetterie Ferroviaire"' value='Train ticketing' />
</column>
Теперь давайте разберем его:
tree = etree.parse('test.xml')
root = tree.getroot()
print(etree.tostring(root,pretty_print=True,).decode("utf-8"))
Когда вы запускаете код, мы можем заметить:
'
становится "
é
становится é
Редактировать: разрешено для этой части '
становится '
Как сохранить оригинал? (Это мне очень поможет, когда я попытаюсь проверить diff с помощью git, несмотря на то, что я показываю все бесполезные изменения, которые выполняются автоматически)
Edit : я замечаю другую проблему, когдая запускаю следующий код:
[node.attrib['key'] for node in root.xpath("//alias")]
Я получил результат: ['"Billetterie Ferroviaire"']
, и теперь я не могу запросить с помощью xpath, если я ищу узел, атрибут "ключ" которого является исходным "Billetterie Ferroviaire"
(root.xpath('//[@key="Billetterie Ferroviaire"])
не работает)