2017-05-11 12 views
0

要素ツリーモジュールを使用しようとしていますが、理解できないエラーが発生します。要素ツリー構文エラー(無効なトークンでうまく構成されていません)

私のコードは、Pythonのドキュメント自体に基づいています。Python Element Tree doc、何とかスクリプトを実行しようとするとエラーが表示されました。

try: 
    import xml.etree.cElementTree as ET 
except ImportError: 
    import xml.etree.ElementTree as ET 
file_name_xml = "curl-result.xml" 
tree = ET.parse(file_name_xml) 
tree.getroot() 

私はこのコードを実行すると:次に

./python2.6 modify_xml_file.py  

を、それは私に、このエラーが発生しました。

Traceback (most recent call last): 
    File "modify_xml_file.py", line 8, in <module> 
    tree = ET.parse(file_name_xml) 
    File "<string>", line 45, in parse 
    File "<string>", line 32, in parse 
SyntaxError: not well-formed (invalid token): line 1, column 4 

答えて

2

のPython 2.6に含まcElementTreeのバージョンは、不正な形式のXMLためSyntaxError例外をスロー:

>>> with open('bad.xml', 'w') as badxml: 
...  badxml = '<foobar\n' 
... 
>>> import xml.etree.cElementTree as ET 
>>> tree = ET.parse('bad.xml') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 45, in parse 
    File "<string>", line 32, in parse 
SyntaxError: no element found: line 1, column 0 

これは、Python 2.7に固定C加速コードのバグです。

>>> import xml.etree.ElementTree as ET 
>>> tree = ET.parse('bad.xml') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python2.6/xml/etree/ElementTree.py", line 862, in parse 
    tree.parse(source, parser) 
    File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python2.6/xml/etree/ElementTree.py", line 587, in parse 
    self._root = parser.close() 
    File "/Users/mjpieters/Development/Library/buildout.python/parts/opt/lib/python2.6/xml/etree/ElementTree.py", line 1254, in close 
    self._parser.Parse("", 1) # end of data 
xml.parsers.expat.ExpatError: no element found: line 1, column 0 

XML入力ファイルを修正しました。(遅い)Pythonパーサーが、より役立つエラーを投げます。 2.7で何が変わった

はElementTreeのは、 SyntaxErrorのサブクラスである新しい ParseError例外を、導入バージョン improved the parserupdated to version 1.3だったということです。

+0

私のxmlの上のカール結果の追加データを削除した後、私はコードを実行することができました。ありがとうございます。もちろん、私はhttp://xmlgrid.net/を使ってオンラインで読むことを試みたので、コードはあらかじめ不正な形式ではないことを確信していました。とにかくありがとうございました。私はなぜこの質問を下降させるべきかわからない。私は以前に何らかの研究をしていた質問をしたがっていた。ありがとうございました。 :) – yunaranyancat

+1

@yunaranyancat:可能な限り完全な質問をするようにしてください。あなたのXML(そしてあなたがそれをどのように作成したか)を含めて、人々が答えをもっと簡単にすることができました。これは[MCVE]と呼ばれます。適切なMCVE(問題が実際にまだ存在するかどうかを確認するための手順をテストする)を作成すると、しばしば解決策につながることがあります。 –

+0

ありがとうございました。今後このガイドを使用します。 – yunaranyancat

関連する問題