<? xml version = "1.0" encoding = "UTF-8"?> not <? xml version = '1.0' encoding = 'UTF-8'?>

Я использую lxml с

tree.write(xmlFileOut, pretty_print = True, xml_declaration = True, encoding='UTF-8'

выписать мой открытый и отредактированный файл XML, но мне абсолютно необходимо иметь объявление XML как

<?xml version=“1.0” encoding=“UTF-8”?> 

и не

<?xml version='1.0' encoding='UTF-8'?>

Теперь я знаю, что они точно такие же, когда дело доходит до XML, но я имею дело с очень хитрым клиентом, который обязательно должен иметь " в декларации а не ', Я искал везде, но не могу найти ответ.

Могу ли я создать его и как-нибудь добавить в заголовок xml?

Могу я сказать lxml, что это то, что мне нужно в качестве декларации xml?

2 ответа

Это сайт для кодирования вопросов, а не сайт для советов по работе с хитрыми клиентами. Ваш клиент не прав; Ваша проблема политическая / коммерческая, а не техническая.

XML допускает одинарные и двойные кавычки, см. Общие синтаксические конструкции, литералы . Зависит от используемого XML-процессора, что именно используется. Тот же вопрос 11 лет назад. См. также обсуждение на форуме Python версии 3.7.

      # single quoting in xml declaration
from lxml import etree
from io import StringIO

xml = '<root>tree</root>'
f = StringIO(xml)

tree = etree.parse(f)
root = tree.getroot()

xmlFileOut = "out.xml"

tree.write(xmlFileOut, pretty_print=True, xml_declaration = True, encoding="UTF-8")

# double quoting in xml declaration
from xml.dom import minidom
xmlDom = minidom.parse("out.xml")

prettyXML = xmlDom.toprettyxml(encoding="UTF-8")

with open("out_min.xml", mode="wb") as file:
    file.write(prettyXML)
Другие вопросы по тегам