終了タグがないと思われる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ライブラリがありますか?
これはXMLファイルではありません。定義上、XMLは整形式であり、解析中にPythonの 'etree'が正しく誤っています。このマークアップについては、ベンダーに対応してください。 – Parfait
ありがとうございます - これは連邦政府から公開されているデータですが、残念ながらドキュメントは見つかりません。 – user1673510
普通のファイルのように行ごとに解析するのはどうですか? –