XMLSyntaxError 应为开始标记,未找到“<”

XMLSyntaxError Start tag expected, '<' not found

在 Django 中,我构建了一个脚本来创建 xml 对象来发出 xml 请求。这是我的代码:

my_xml = etree.XML('''\"<?xml version="1.0"? encoding="UTF-8"?> <!DOCTYPE peticion SYSTEM "http://example.com"> ]><request></request>"''')
my_xml_doc = etree.ElementTree(my_xml)
my_tipe = etree.SubElement(my_xml, "element")
my_tipe.text = 'Element'
my_xml_serialize = etree.parse(my_xml)
my_request = urllib2.Request(url, my_xml_serialize)

但是 django 抛出一个错误

XMLSyntaxError Start tag expected, '<' not found, line 1, column 1

感谢您的回答!

Python is doing string concatenation behind the scenes。观察:

> "x"'f'=='xf'
True

所以你的字符串:

'''\"<?xml version="1.0"? encoding="UTF-8"?> <!DOCTYPE peticion SYSTEM "http://example.com"> ]><request></request>"'''

实际计算为:

''+'\"<?xml version="1.0"? encoding="UTF-8"?> <!DOCTYPE peticion SYSTEM "http://example.com"> ]><request></request>"'+''

即:

'\"<?xml version="1.0"? encoding="UTF-8"?> <!DOCTYPE peticion SYSTEM "http://example.com"> ]><request></request>"'

该字符串的开头是文字双引号 (")。这在尖括号外的 XML 中无效。因此错误。

将其更改为以下内容,应该可以正常工作:

'<?xml version="1.0"? encoding="UTF-8"?> <!DOCTYPE peticion SYSTEM "http://example.com"> ]><request></request>'

编辑:Fine 是夸大其词,原来的问题是字符串连接。然而,经过简短而慷慨的检查后,您的实际 XML 文档中存在许多问题,包括语法错误、错误指定的 DOCTYPE 以及实际上不符合该 DOCTYPE 的文档。

将文档一直修剪到:

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

将允许代码 运行,但任何有关使 DOCTYPE 工作的帮助肯定是另一个问题。