次のような XML ファイルがあります。
<TAG1>
<TAG2 attribute1 = "attribute_i_need" attribute2 = "attribute_i_dont_need" >
Text I want to use
</TAG2>
<TAG3>
Text I'm not interested in
</TAG3>
<TAG4>
More text I want to use
</TAG4>
必要なのは、「使用したいテキスト」と「使用したいその他のテキスト」を何らかの方法で取得することですが、「興味のないテキスト」を後で任意の関数で使用できる文字列の形式にすることではありません. また、「attribute_i_need」を文字列の形式で取得する必要があります。私は以前にsaxパーサーを実際に使用したことがなく、完全に立ち往生しています。以下を使用して、ドキュメント内のすべてのテキストを印刷できました。
import xml.sax
class myHandler(xml.sax.ContentHandler):
def characters(self, content):
print (content)
parser = xml.sax.make_parser()
parser.setContentHandler(myHandler())
parser.parse(open("sample.xml", "r"))
これにより、基本的に出力が得られます。
Text I want to use
Text I'm not interested in
More text I want to use
しかし、問題は 2 つあります。まず第一に、これには私が興味のないテキストが含まれています。第二に、テキストを印刷するだけです。特定のテキストのみを出力する方法や、変数に割り当てて後で使用できる文字列としてテキストを返すコードを作成する方法がわかりません。そして、興味のある属性を抽出することから始める方法さえ知りません。
この問題を解決する方法を知っている人はいますか?そして、少なくとも私はそれがどのように機能するかについて漠然とした理解を持っているので、sax パーサーを含むソリューションを好みます。