2009-08-28 48 views
1

我想解析一個類似於HTML文件的文件。它不完全是一個html文件。它可以包含一些用戶定義的標籤。我不知道如何提前標籤嵌套在另一個標籤。標籤也可能有屬性。 我想我推薦使用SAX解析器。 java有一個內置的SAX。當我遇到每個標籤時,我可以調用一個函數嗎?如何使用SAX解析java中的xml文檔

回答

2

我認爲你應該使用StAX來代替,它比SAX更快更易於使用。它是Java SE 6的一部分。

+0

的我與它是更容易使用不同意的方法。 SAX中的startElement()實質上向您傳遞了一個屬性映射。你不得不寫一段更復雜的代碼來從StAX中獲取這些信息。 – cletus

+0

另一方面,StAX允許您使用簡單的遞歸下降解析器解析XML文檔,其中調用堆棧與元素堆棧相匹配。使用SAX你必須編寫一個狀態機,這需要更多的樣板,並且至少我認爲要比從StAX光標讀入地圖的util方法更難。 – gustafc

4

使用以下軟件包, java.io,javax.xml.parsers,org.xml.sax。

SAXParserFactory spf = SAXParserFactory.newInstance(); 
XMLReader reader = null; 

    SAXParser parser = spf.newSAXParser(); 
    reader = parser.getXMLReader(); 

reader.setContentHandler(new MyContentHandler()); 

//XMLReader to parse the entire file. 

    InputSource is = new InputSource(filename); 
    reader.parse(is); 

//實現的ContentHandler

class MyContentHandler implements ContentHandler { 
}