(лучше название, кто-нибудь?) Рендеринг XML, созданного с помощью lxml.builder
, с помощью небольшого приложения Flask в Python 3.6. Функция makeXML
в модуле mkX
создает и возвращает XML следующим образом:
from lxml import etree as ET
...
def makeXML():
...
# myxml is type <class 'lxml.etree._Element'>
f = ET.tostring(myxml, method='xml', xml_declaration=True, encoding='utf-8', pretty_print=True)
return f
Где method=xml
может быть опущено, так как это значение по умолчанию. Приложение Flask делает:
@app.route('/getXML')
def getXML():
xml = mkX.makeXML()
print(type(xml)) # xml is type <class 'bytes'>
return xml
Когда я захожу на [myurl]/getXML
в Chrome или Firefox, я вижу это:
eggs bacon sausage spam
Он пропускает теги XML. Почему это происходит? Нажав на источник просмотра, я вижу это:
<?xml version='1.0' encoding='utf-8'?>
<someXML>
<reclist>
<dat>eggs</dat>
<dat>bacon</dat>
<dat>sausage</dat>
<dat>spam</dat>
</reclist>
</someXML>
С pretty_print=True
он красиво отформатирован. Без него:
<?xml version='1.0' encoding='utf-8'?>
<someXML><reclist><dat>eggs</dat><dat>bacon</dat><dat>sausage</dat><dat>spam</dat></reclist></someXML>
Глядя на другие веб-сервисы, которые возвращают XML, браузер не пропускает теги XML, например , этот .
Значит ли это, что myxml не является допустимым XML? Если так, то в чем разница и как мне это исправить?