How To Read XML File In Java – (SAX Parser)
原文地址:http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/ SAX parseris work differently with DOM parser,it either load any XML document into memory nor create any object representation of the XML document. Instead,the SAX parser use callback function ( SAX Parser is faster and uses less memory than DOM parser.
See following SAX callback methods :
1. XML fileCreate a simple XML file.
<?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 fileUse SAX parser to parse the XML file.
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 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,length)); blname = false; } if (bnname) { System.out.println("Nick Name : " + new String(ch,length)); bnname = false; } if (bsalary) { System.out.println("Salary : " + new String(ch,length)); bsalary = false; } } }; saxParser.parse("c:file.xml",handler); } catch (Exception e) { e.printStackTrace(); } } } Result 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
Warning
This example may encounter exceptions for UTF-8XML file,please read this article about how to read the XML “UTF-8″ file in SAX (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |