1

次の非常に単純な XML ファイルがあり、minidom を使用して各デバイスの imsi 要素をすばやく解析したいと考えています。

    <device>
      <imsi>01010101</imsi>  
    </device>
    <device>
      <imsi>123456</imsi>
    </device>
    <device>
      <imsi>9876543</imsi>
    </device>

    --------------------------
    CODE SNIPPET FOR PARSING
    --------------------------

    doc = xml.dom.minidom.parse("./input.xml")

    for node in doc.getElementsByTagName("device"):
          imsi = node.getElementsByTagName("imsi")
          print str(imsi)

上記のコード スニペットを実行すると、ターミナルで以下のエラーが発生します。各デバイスの imsi 要素を解析するために、上記のコードにどのような改善を加える必要があると思いますか? ありがとう。

doc = xml.dom.minidom.parse("./input.xml")
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/minidom.py", line 1915, in parse
return expatbuilder.parse(file)
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 926, in parse
result = builder.parseFile(fp)
File "/usr/lib/python2.6/site-packages/_xmlplus/dom/expatbuilder.py", line 207, in  parseFile
parser.Parse(buffer, 0)
xml.parsers.expat.ExpatError: junk after document element: line 4, column 0

ルート ノードを導入した後、次のコードを書きましたが、奇妙な出力になりました。ここで何が間違っていると思いますか?

     doc = xml.dom.minidom.parse("./input.xml") 
     for node in doc.getElementsByTagName("device"):
         imsi = node.getElementsByTagName("imsi") 
         print str(imsi) 

    [<DOM Element: imsi at 0x828636c>] 
    [<DOM Element: imsi at 0x82864ac>]  
    [<DOM Element: imsi at 0x828660c>] 

次のコードは私の問題を解決し、IMSI要素を適切に出力しました:

    for node in doc.getElementsByTagName("device"):
        imsi = node.getElementsByTagName("imsi")
        for a in imsi:
                Title= a.firstChild.data
                print Title
4

2 に答える 2

2

サンプルにはルート ノードがないため、有効な XML ドキュメントではありません。1つ挿入して次のようなものを取得します

<devices>
  <device>
    <imsi>01010101</imsi>  
  </device>
  <device>
    <imsi>123456</imsi>
  </device>
  <device>
    <imsi>9876543</imsi>
  </device>
</devices>
于 2012-01-24T14:23:02.703 に答える
1

xml が無効です。xml にルート ノードを挿入します。

W3C Markup Validatorで有効性を確認できます。

<document>
    <device>
      <imsi>01010101</imsi>  
    </device>
    <device>
      <imsi>123456</imsi>
    </device>
    <device>
      <imsi>9876543</imsi>
    </device>
</document>

xml を追加するよりも完全に有効にしたい場合document type declaration

于 2012-01-24T14:25:45.853 に答える