2017-08-29 4 views
1

SAXパーサハンドラクラスでファイル名を取得する方法はありますか? 私は、テキストファイルにタグの内容とともにファイル名を書き込む必要があります。SAX Parserでファイル名を取得するには?

助けてください。

編集:私はこの

saxParser.parse( "input.xmlに"、saxHandler)が必要です。 saxHandlerの に「id」タグがある場合は、値を読み取り、ファイル名とともに値を保存します。マップまたはオブジェクトにすることができます。

+0

どのファイルがありますか?誰がファイルがあると言ったのですか? – shmosel

+0

どこか読んでファイルを読まない。私は文字列変数からデータを解析することができますが、私はそれについて明確な考えを持っていません。ファイル名を取得する方法はありますか? – Rekha

+0

ファイルを読み込んでいる場合は、ファイル名があります。あなたが持っているものすべてがパーサーであれば、それほど多くすることはできません。ソースは何でもかまいません。 – shmosel

答えて

2

SAXパーサーは、通常、他のイベント処理メソッドを呼び出す前にContentHandler.setDocumentLocator()を呼び出します。指定されたLocatorを使用してSystemIdを取得することができます。ファイルから解析する場合、SystemIdは通常、ソースファイル名をURI形式で取得します。

いくつかの注意点は:

  • SAXパーサーは、このメソッドを呼び出すことが奨励されていますが、そうする義務はありません。

  • FileInputStreamから解析すると、ソースファイル名(したがってSystemId)がパーサーに認識されない可能性があります(実際には、ソースXMLは必ずしもファイルから来るわけではありません)。

  • ソースドキュメントが複数の外部エンティティで構成される場合、SystemIdは解析中に変更される可能性があります。

関連する問題