JavaでXMLファイルを読む方法 – (SAX Parser)
SAX Parser is faster and uses less memory than DOM parser.
次のSAXコールバックメソッドを参照してください。
-
startDocument()
および
endDocument()
– 開始時および終了時に呼び出されるメソッド
XML文書の終わり。
-
startElement()
and
endElement()
– 最初と最後に呼び出されたメソッド
ドキュメント要素の終わり。
-
characters()
– 間にテキストの内容で呼び出されたメソッド
XMLドキュメント要素の開始タグと終了タグ。
1. XMLファイル
単純なXMLファイルを作成します。
<?xml version="1.0"?>
<company>
<staff>
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff>
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
2. Javaファイル
SAXパーサを使用してXMLファイルを解析します。
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReadXMLFile {
public static void main(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
if (qName.equalsIgnoreCase("FIRSTNAME")) {
bfname = true;
}
if (qName.equalsIgnoreCase("LASTNAME")) {
blname = true;
}
if (qName.equalsIgnoreCase("NICKNAME")) {
bnname = true;
}
if (qName.equalsIgnoreCase("SALARY")) {
bsalary = true;
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
if (bfname) {
System.out.println("First Name : " + new String(ch, start, length));
bfname = false;
}
if (blname) {
System.out.println("Last Name : " + new String(ch, start, length));
blname = false;
}
if (bnname) {
System.out.println("Nick Name : " + new String(ch, start, length));
bnname = false;
}
if (bsalary) {
System.out.println("Salary : " + new String(ch, start, length));
bsalary = false;
}
}
};
saxParser.parse("c:\\file.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}
結果
Start Element :company Start Element :staff Start Element :firstname First Name : yong End Element :firstname Start Element :lastname Last Name : mook kim End Element :lastname Start Element :nickname Nick Name : mkyong End Element :nickname Start Element :salary Salary : 100000 End Element :salary End Element :staff Start Element :staff Start Element :firstname First Name : low End Element :firstname Start Element :lastname Last Name : yin fong End Element :lastname Start Element :nickname Nick Name : fong fong End Element :nickname Start Element :salary Salary : 200000 End Element :salary End Element :staff End Element :company
-
警告
この例では、
UTF-8 ** XMLファイルの例外が発生する可能性があります。リンク://java/how-to-read-utf-8-xml-file-in-java-sax-parser/[SAXでXML “UTF-8″ファイルを読む方法] -
Note ** あなたはこのリンクを読むことができます://java/how-to-read-xml-file-in-java-dom-parser[JavaでXMLファイルを読む方法 – (DOM Parser)]