2012-03-15 85 views
2

是否可以使用SAXParser逐行解析xml文件?SAX和逐行解析Java

+3

當打開和關閉標籤不在同一行時,您會期望它做什麼? – 2012-03-15 15:19:33

+0

我不認爲有什麼理由可以降低一個問題,畢竟這是一個有兩個邏輯回答yes或no的問題。 – bluesman 2012-03-15 15:21:03

+0

我想逐行讀取文件,並用SAX解析它,並且是否滿足將解析的行寫入新文件的條件。 – mpele 2012-03-15 16:07:45

回答

2

最簡單的方法是將每行傳遞給第二個線程。例如通過PipedInputStream。

將來你可能能夠在Java 8或9中使用延續?在同一個線程中使用解析器。

SAX解析器應該爲您提供每個完整的事件,它可以爲您給它的行。

順便說一句:在過去我寫了一個「推」解析器來做到這一點,但我不知道任何標準的SAX解析將在一個線程中做到這一點。

0

我不知道這是否會幫助你的情況,買SAX是基於這意味着你可以在某個標籤的標準編寫代碼的事件是通過擴展了DefaultHandler匹配:

class MySAXHandler extends DefaultHandler { 
    public void startDocument() { 
    System.out.println("Start document: "); 
} 

有很多方法以覆蓋,看看:http://www.java2s.com/Code/Java/XML/SAXeventhandler.htm

希望這可以幫助!