-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.parseString代わりに使用する必要があります。minidom.parseファイル ハンドルまたはファイル名のいずれかが必要です。

そのため、代わりに次のようにします。

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