我正在尝试学习运行 Python 2.7.2 的 XML 处理(使用 lxml)的基础知识。我创建了一个非常简单的起始文件,但它正在崩溃。代码是:
from lxml import etree
doc = etree.parse('/Desktop/plc_dmt.xml')
print doc
我尝试了此代码的变体,使用不同的 xml 文件,并在执行 etree.parse() 方法之前先打开文件,但它们都会产生类似或相同的错误消息,如下所示:
Traceback (most recent call last):
File "XMLparse_test.py", line 7, in <module>
doc = etree.parse('/Users/Dad/Desktop/plc_dmt.xml')
File "lxml.etree.pyx", line 2954, in lxml.etree.parse (src/lxml/lxml.etree.c:56220)
... {Misc error stuff}
...
lxml.etree.XMLSyntaxError: xmlParsePI : no target name, line 3, column 14
我确认至少有一些 XML 文件格式正确,至少在它们在 Web 服务器上正确运行的情况下是这样。我不明白错误消息——它正在寻找的目标名称是什么?
这是输入的xml文件。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<response>
<heartbeat><?--#exec cmd_argument='printf( "0x%02X%02X", InReadUByte( 0 ), InReadUByte( 1 ))'--> </heartbeat>
<dmt node="1">
<address><?--#exec cmd_argument='printf( "0x%02X", InReadUByte( 20 ))'--></address>
<status><?--#exec cmd_argument='printf( "0x%02X", InReadUByte( 21 ))'--></status>
<realflow><?--#exec cmd_argument='printf( "%f", InReadFloat( 22 ))'--></realflow>
<pressure><?--#exec cmd_argument='printf( "0x%02X%02X", InReadUByte( 26 ), InReadUByte( 27 ))'--></pressure>
<temp><?--#exec cmd_argument='printf( "0x%02X%02X", InReadUByte( 28 ), InReadUByte( 29 ))'--></temp>
</dmt>
# Misc stuff pulled out to keep file shorter...
</response>
许多嵌入式代码是此 Web 服务器的服务器端包含命令,它连接到某些工具。该文件在服务器上运行正常。