我知道这个问题已经在堆栈上被多次询问(和回答)。我已经尝试了很多,但由于某种原因我无法克服这个错误:
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>'
Run Code Online (Sandbox Code Playgroud)
这是导致问题的代码位:-
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)
Run Code Online (Sandbox Code Playgroud)
从以前的答案“没有这样的文件目录”意味着它找不到xml,但是当我在代码中将它声明为变量时,情况仍然如此吗?我猜这很简单,但就是无法发现它。
minidom.parse()接受文件名(或文件对象而不是字符串),而不是要解析的 XML。使用xml.minidom.parseString()来代替:
xmldoc = minidom.parseString(sampleXML)
Run Code Online (Sandbox Code Playgroud)
请注意,除非你已经熟悉XML DOM标准,你可能不希望使用的xml.minidom包装; 正如文档所述:
尚未精通 DOM 的用户应考虑使用该
xml.etree.ElementTree模块进行 XML 处理。
由于其跨语言性质,DOM 非常冗长,并且没有利用 Python 的优势。如果可以,请改用 ElementTree API;要么使用标准库xml.etree.ElementTree模块,要么使用(更快更全面的)外部lxml库。