首页 > 代码库 > SAX解析XML-例子
SAX解析XML-例子
1.要解析的xml
<?xml version="1.0" encoding="UTF-8"?> <employees> <employee id="001"> <name>cici</name> <department>finace</department> <supervisor>lily</supervisor> </employee> <employee id="002"> <name>alex</name> <department>develope</department> <supervisor>lily</supervisor> </employee> </employees>
2.继承DefaultHandler的子类EmployeeHandler.java,重写方法
package sax; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class SaxXMLTest { public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{ readXMLBySaxParser(); readXMLByXMLReader(); } private static void readXMLBySaxParser() throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); EmployeeHandler handler = new EmployeeHandler("employee"); parser.parse("src\\sax\\employees.xml", handler); List<Map<String, String>> employees = handler.getEmployees(); System.out.println(employees.toString()); } private static void readXMLByXMLReader() throws SAXException, SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException { XMLReader reader = XMLReaderFactory.createXMLReader(); //打开解析器验证的功能 reader.setFeature("http://xml.org/sax/features/validation",true); //开启明明空间特性 reader.setFeature("http://xml.org/sax/features/namespaces",true); EmployeeHandler handler = new EmployeeHandler("employee"); reader.setContentHandler(handler); reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\\sax\\employees.xml")))); } }
3.测试类 SaxXMLTest.java,用SAXParser和XMLReader两种方式解析
package sax; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.XMLReaderFactory; public class SaxXMLTest { public static void main(String[] args) throws SAXException, ParserConfigurationException, IOException{ readXMLByHandler(); readXMLByXMLReader(); } private static void readXMLByHandler() throws ParserConfigurationException, SAXException, IOException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); EmployeeHandler handler = new EmployeeHandler("employee"); parser.parse("src\\sax\\employees.xml", handler); List<Map<String, String>> employees = handler.getEmployees(); System.out.println(employees.toString()); } private static void readXMLByXMLReader() throws SAXException, SAXNotRecognizedException, SAXNotSupportedException, FileNotFoundException, IOException { XMLReader reader = XMLReaderFactory.createXMLReader(); //打开解析器验证的功能 reader.setFeature("http://xml.org/sax/features/validation",true); //开启明明空间特性 reader.setFeature("http://xml.org/sax/features/namespaces",true); EmployeeHandler handler = new EmployeeHandler("employee"); reader.setContentHandler(handler); reader.parse(new InputSource(new BufferedInputStream(new FileInputStream("src\\sax\\employees.xml")))); } }
SAX解析XML-例子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。