Как отобразить HTML, используя L XML в Python - PullRequest
0 голосов
/ 08 мая 2020

Так что то, что я пытаюсь достичь, действительно простое.

Я хочу позвонить python test.py и хочу go на свой локальный хост и увидеть результат html. Однако я продолжаю получать сообщение об ошибке ValueError: Invalid tag name u'<html><body><h1>Test!</h1></body></html>'

Ниже мой код. В чем проблема?

import lxml.etree as ETO
html = ETO.Element("<html><body><h1>Test!</h1></body></html>")
self.wfile.write(ETO.tostring(html, xml_declaration=False, pretty_print=True))

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Поскольку вы читаете существующий файл, Element здесь бесполезен; попробуйте изменить это

html = ETO.Element("<html><body><h1>Test!</h1></body></html>")

на это

html = ETO.fromstring("<html><body><h1>Test!</h1></body></html>")

и посмотрите, сработает ли это для вас.

0 голосов
/ 08 мая 2020

Вы должны создать каждый элемент по очереди и поместить их в структуру, которую вы хотите, чтобы они имели:

html = ETO.Element('html')
body = ETO.SubElement(html, 'body')
h1 = ETO.SubElement(body, 'h1')
h1.text = 'Test!'

Тогда ETO.tostring (html) вернет байтовую строку, которая выглядит как это:

>>> ETO.tostring(html)
b'<html><body><h1>Test!</h1></body></html>'
...