2009-08-28 9 views
1

私はHTMLファイルに似たファイルを解析したいと思います。正確にはHTMLファイルではありません。ユーザー定義のタグをいくつか含むことができます。タグが事前に相互にネストされている方法を事前に知っていません。タグには属性も含まれています。 私はSAXパーサを使っています。 Javaはinbuilt 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 { 
} 
関連する問題