-1

我知道这个问题在堆栈上已被多次询问(并回答)。而且我已经尝试了很多,但由于某种原因我无法克服这个错误:

Traceback (most recent call last):
  File "J:\eclipse\workspace_python\TF2_Monitor\src\TF2_Monitor.py", line 23, in <module>
    xmldoc = minidom.parse(sampleXML)
  File "C:\Python27\lib\xml\dom\minidom.py", line 1920, in parse
    return expatbuilder.parse(file)
  File "C:\Python27\lib\xml\dom\expatbuilder.py", line 922, in parse
    fp = open(file, 'rb')
IOError: [Errno 2] No such file or directory: '<?xml version = "1.0" encoding = "utf-8"?>\n<Patients>\n    <Patient>\n               <PatientCharacteristics>\n                   <patientCode>3</patientCode>\n               </PatientCharacteristics>\n    </Patient>\n</Patients>'

这是导致问题的代码位:-

if __name__ == '__main__':
   from xml.dom import minidom

   sampleXML = """<?xml version = "1.0" encoding = "utf-8"?>
   <Patients>
      <Patient>
           <PatientCharacteristics>
               <patientCode>3</patientCode>
           </PatientCharacteristics>
      </Patient>
   </Patients>"""


   xmldoc = minidom.parse(sampleXML)

从以前的答案“没有这样的文件目录”意味着它找不到 xml,但是当我在代码中将它声明为变量时,情况仍然如此吗?我猜这很简单,但就是找不到。

4

2 回答 2

5

minidom.parse()采用文件名(或文件对象而不是字符串),而不是要解析的 XML。改用xml.minidom.parseString()

xmldoc = minidom.parseString(sampleXML)

请注意,除非您已经熟悉 XML DOM 标准,否则您可能不想使用该xml.minidom包;正如文件所述:

尚未精通 DOM 的用户应考虑改用该xml.etree.ElementTree模块进行 XML 处理。

由于其跨语言特性,DOM 非常冗长,并且没有利用 Python 的优势。如果可以,请改用 ElementTree API;要么使用标准库xml.etree.ElementTree模块,要么使用(更快、更全面的)外部lxml

于 2013-10-23T09:47:42.390 回答
2

如果要解析字符串,则需要使用minidom.parseStringminidom.parse需要文件句柄或文件名。

因此,请改为执行以下操作:

xmldoc = minidom.parseString(sampleXML)
于 2013-10-23T09:47:17.670 回答