xmlファイルを解析しようとしていました。私の問題はこれと同じです:
PythonElementTreeを使用して不明な要素のxmlファイルを解析する
そして、untubuの解決策を試しました。
それは素晴らしい働きをします。ただし、単一のタグを持つ行のみ
例えば:
<some_root_name>
<tag_x>bubbles</tag_x>
</some_root_name>
これはうまく機能しますが、次のような場合:
src = '''\
<review type="review"><link>http://www.openlist.com/new-york-ny/mickey-mantles/27612417/?numReviews=178</link>
'''
それは失敗します..私はこのような多くのインスタンスを持っています。ネイティブライブラリの使用法を超えたくないのは、この後、別のコンピューター(prod env)でコードを実行し、そこにライブラリを設定する必要があるためです。
方法はありますか、これを解決するために元のソリューションを変更できます。ありがとう。
上記のリンクからのコード:
import xml.sax as sax
import xml.sax.handler as saxhandler
import pprint
class TagParser(saxhandler.ContentHandler):
# http://docs.python.org/library/xml.sax.handler.html#contenthandler-objects
def __init__(self):
self.tags = {}
def startElement(self, name, attrs):
self.tag = name
def endElement(self, name):
if self.tag:
self.tags[self.tag] = self.data
self.tag = None
self.data = None
def characters(self, content):
self.data = content
parser = TagParser()
src = '''\
<some_root_name>
<tag_x>bubbles</tag_x>
<tag_y>car</tag_y>
<tag...>42</tag...>
</some_root_name>'''
sax.parseString(src, parser)
pprint.pprint(parser.tags)
例外トレース:
File "extract_xml.py", line 59, in unittest
sax.parseString(src, parser)
File "C:\Python27\lib\xml\sax\__init__.py", line 49, in parseString
parser.parse(inpsrc)
File "C:\Python27\lib\xml\sax\expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "C:\Python27\lib\xml\sax\xmlreader.py", line 125, in parse
self.close()
File "C:\Python27\lib\xml\sax\expatreader.py", line 217, in close
self.feed("", isFinal = 1)
File "C:\Python27\lib\xml\sax\expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "C:\Python27\lib\xml\sax\handler.py", line 38, in fatalError
raise exception
xml.sax._exceptions.SAXParseException: <unknown>:2:4: no element found