2017-08-29 81 views
1

有沒有辦法在SAX解析器處理程序類中獲取文件名? 我有一個要求將文件名和標籤內容一起寫入文本文件。如何在SAX解析器中獲取文件名?

請幫忙。

編輯:我需要這個

saxParser.parse( 「Input.xml中」,saxHandler); 在saxHandler中,當我有'id'標記時,讀取值並將值與文件名一起存儲。它可以是地圖或對象。

+0

什麼文件?誰說有一個文件? – shmosel

+0

我在某處讀取它不會讀取文件。我可以從字符串變量中解析數據,但我對此沒有清楚的想法。有沒有辦法獲得文件名? – Rekha

+0

如果你正在加載文件,你有文件名。如果你擁有的只是一個解析器,那麼你所能做的就不多。來源可以是任何東西。 – shmosel

回答

2

在調用任何其他事件處理方法之前,SAX解析器通常會調用ContentHandler.setDocumentLocator()。提供的定位器可用於獲取SystemId,如果您要從文件解析,則SystemId通常會以URI形式爲您提供源文件名。

一些注意事項:

  • SAX解析器鼓勵調用此方法,但它沒有義務這樣做。

  • 在某些情況下,例如,如果從FileInputStream解析,解析器可能不知道源文件名(因此SystemId)(實際上,源XML不一定來自文件)。

  • 如果源文檔包含多個外部實體,則SystemId可以在解析過程中更改。