2016-12-18 9 views
0

私はXMLファイルを再生して解析しています。 私のプロジェクトの一つとして、wireshark直径の辞書xmlファイルを使って解析しようとしました。私のアテンプメントは失敗しました。 pythonを使用する2.7 ここでの主な質問はなぜですか?私が紛失していることが明白な何かがなければならない。Wireshark XMLファイルがpython xmlパーサーに失敗しました。どうして?

import xml.etree.ElementTree as ET: 

def load_dict(path, filename): 
    with open("%s/%s" % (path, filename)) as f: 
     return f.readlines() 

ET.fromstring("".join(load_dict("diameter", "HP.xml"))) 

戻り値のエラー:

Traceback (most recent call last): 
    File ".../loadxml.py", line 7, in <module> ET.fromstring("".join(load_dict("diameter", "HP.xml"))) 
    File "...\Python27\lib\xml\etree\ElementTree.py", line 1311, in XML parser.feed(text) 
    File "...\Python27\lib\xml\etree\ElementTree.py", line 1653, in feed self._raiseerror(v) 
    File "...\Python27\lib\xml\etree\ElementTree.py", line 1517, in raiseerror raise err 
xml.etree.ElementTree.ParseError: junk after document element: line 5, column 0 

XMLファイルには、私にはOKに見えますが、それはそれでチョーク:

<?xml version="1.0" encoding="UTF-8"?> 

<vendor vendor-id="XXX" code="42" name="Company. Inc."/> 

<application id="555" name="Demo" uri="None"> 

</application> 

答えて

0

あなたの文書がうまくフォーマットされていないようですが、私には見えます。 https://en.wikipedia.org/wiki/Well-formed_document

Content be delimited with a beginning and end tag

最初のタグ「ベンダー」を参照してください、それは残りのタグが含まれていない閉じた自己です。ファイルの一部だけを持っているか、正しいXMLではありません。ルートタグを追加して他のタグをすべて囲むこともできますが、それでもうまくいかない場合もあります。

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<vendor vendor-id="XXX" code="42" name="Company. Inc."/> 
<application id="555" name="Demo" uri="None"> 
</application> 
</root> 

あなたはここにhttp://www.w3schools.com/xml/xml_validator.asp

0

はあなたをありがとうXMLを検証することができます。あなたは私に正しい方向を指摘しました。 実際、wiresharkのXMLファイルは、見落とした1つのマスターファイルに含まれています。 正しいXMLで始まって他のすべてのファイルが含まれていれば、OKを解析しました。

XML形式の理解に誤りがありました。私は、各タグを閉じなければならないことに気付きませんでしたが、他のすべてのタグをルート1に囲む必要もあります。

関連する問題