XMLドキュメントがメモリに収まる場合は、Beautiful Soupを使用する必要があります。これにより、ドキュメントへのアクセスが大幅に向上します。ノードを選択して、その子と自動的に対話することができます。すべてのノードには.next
コマンドがあり、次のタグまでテキストを繰り返し処理します。
それで:
>>> b = BeautifulSoup.BeautifulStoneSoup("<p>This is a paragraph <em>with some <b>extra</b> formatting</em> scattered throughout.</p>")
>>> b.find('p')
<p>This is a paragraph <em>with some <b>extra</b> formatting</em> scattered throughout.</p>
>>> b.find('p').next
u'This is a paragraph '
>>> b.find('p').next.next
<em>with some <b>extra</b> formatting</em>
それ、またはそのようなものは、あなたの問題を解決するはずです。
メモリに収まらない場合は、SAXパーサーをサブクラス化する必要があります。これはもう少し手間がかかります。from xml.parsers import expat
これを行うには、タグを開いたり閉じたりするためのハンドラーを使用および記述します。もう少し複雑です。