2017-05-11 15 views
0

終了タグがないと思われるxmlドキュメントを読み込もうとしています。私は、このXMLドキュメントを作成していなかったが、私は次の場所からダウンロードしています:タグを閉じずにXML文書を解析する方法(Python)?

import ftplib 
import xml.etree.cElementTree as et 

filename = 'FBOFeed20170509' 

ftp = ftplib.FTP('ftp.fbo.gov') 
ftp.login(user = '', passwd = '') 

localfile = open(filename, 'wb') 
ftp.retrbinary('RETR ' + filename, localfile.write, 1024) 

ftp.quit() 
localfile.close() 

tree = et.parse(filename) 

for node in tree.iter(): 
    print (node.tag, node.attrib) 

そして、ここでは私のエラーです:

Traceback (most recent call last): 
    File "", line 18, in <module> 
tree = et.parse(filename) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/xml/etree/ElementTree.py", line 1184, in parse 
tree.parse(source, parser) 
    File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/xml/etree/ElementTree.py", line 596, in parse 
self._root = parser._parse_whole(source) 
    File "<string>", line None 
xml.etree.ElementTree.ParseError: mismatched tag: line 24, column 2 

は、だから私は取るために、テキストエディタでファイルを開きます見て、閉じタグがないことを確認してください。ここでは最初の24行は、次のとおりです。

<PRESOL> 
<DATE>0509 
<YEAR>17 
<AGENCY>Department of the Air Force 
<OFFICE>Air Education and Training Command 
<LOCATION>Luke AFB Contracting Squadron 
<ZIP>85309 
<CLASSCOD>Z 
<NAICS>238320 
<OFFADD>14100 W. Eagle Street Luke AFB AZ 85309 
<SUBJECT>Painting IDIQ Luke AFB 
<SOLNBR>FA488717R0005 
<CONTACT>Justin A Cheeks, Phone 8566232747, Email [email protected] 
<DESC>The 56th ... 
<LINK> 
<URL>https://www.fbo.gov/spg/USAF/AETC/LukeAFBCS/FA488717R0005/listing.html 
<DESC>Link To Document 
<SETASIDE>Service-Disabled Veteran-Owned Small Business 
<POPCOUNTRY>US 
<POPZIP>85309 
<POPADDRESS>14100 W Eagle Street (B-26) 

Luke AFB, AZ 
</PRESOL> 

私はエラーがPRESOLは/ PRESOLで閉じられているという事実に関連しているが、他のタグのどれが閉じされていないと思います。これは簡単なエントリで、他のタグのいくつかはDESCまたはCONTACT部分にさまざまなHTMLタグが含まれているため、パーズする前にタグを閉じる方法がわからない場合があります。たとえば、ファイルの別の部分は次のとおりです。

<CONTACT>Tammy Davis 
[email protected] 

<a href="mailto:[email protected]">[email protected]</a> 
<DESC>The purpose... 

タグがすべて同じ順序であるか、各エントリで同じであるかわかりません。これはXML形式ですか?私はここで使用するはずの別のPythonライブラリがありますか?

+0

これはXMLファイルではありません。定義上、XMLは整形式であり、解析中にPythonの 'etree'が正しく誤っています。このマークアップについては、ベンダーに対応してください。 – Parfait

+0

ありがとうございます - これは連邦政府から公開されているデータですが、残念ながらドキュメントは見つかりません。 – user1673510

+0

普通のファイルのように行ごとに解析するのはどうですか? –

答えて

0

https://github.com/presidential-innovation-fellows/fbo-parser通知タイプ内のフィールドに終了タグを追加するJSONに毎日のFBOファイルを解析します。私はそれを使用してXMLファイルに変換し、データベースにデータをインポートします。

+0

このリンクは質問に答えるかもしれませんが、ここでの回答と参照用のリンクを提供します。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューの投稿](/レビュー/低品質の投稿/ 18258889) –

関連する問題