XML:Extensible Markup Language,可擴展標記語言,左衛門數據的一種存儲格式或用於存儲軟件的參數,程序解析此配置文件,就能夠達到不修改代碼就能更改程序的目的。java
<?xml version="1.0" encoding="UTF-8"?> <persons> <person> <name>至尊寶</name>> <age>9000</age> </person> <person> <name>白晶晶</name>> <age>2000</age> </person> </persons>
package server.study; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import java.io.IOException; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 熟悉SAX解析流程 * Created by 16114 on 2019/8/22. * */ public class XmlTest01 { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { //SAX解析 //1.獲取解析工廠 SAXParserFactory factory = SAXParserFactory.newInstance(); //2.從解析工廠獲取解析器 SAXParser parser = factory.newSAXParser(); //3.編寫處理器 //4.加載文檔Document註冊處理器 PHandler handler = new PHandler(); //5.解析 parser.parse(Thread.currentThread().getContextClassLoader() .getResourceAsStream("server/study/p.xml") ,handler); } } class PHandler extends DefaultHandler{ @Override public void startDocument() throws SAXException { System.out.println("---解析文檔開始---"); } @Override public void endDocument() throws SAXException { System.out.println("---解析文檔結束---"); } @Override public void characters(char[] ch, int start, int length) throws SAXException { String contents = new String(ch,start,length).trim(); if (contents.length() > 0) { System.out.println("內容爲-->" + contents); } else { System.out.println("內容爲-->" + "空"); } } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // super.startElement(uri, localName, qName, attributes); System.out.println(qName+ "--->解析開始 "); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { //super.endElement(uri, localName, qName); System.out.println(qName+ "--->解析結束"); } }
package server.study; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * 熟悉SAX解析流程 * Created by 16114 on 2019/8/22. * */ public class XmlTest02 { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { //SAX解析 //1.獲取解析工廠 SAXParserFactory factory = SAXParserFactory.newInstance(); //2.從解析工廠獲取解析器 SAXParser parser = factory.newSAXParser(); //3.編寫處理器 //4.加載文檔Document註冊處理器 PersonHandler handler = new PersonHandler(); //5.解析 parser.parse(Thread.currentThread().getContextClassLoader() .getResourceAsStream("server/study/p.xml") ,handler); //獲取數據 List<Person> persons = handler.getPersons(); for (Person p:persons ) { System.out.println(p.getName()+"-->"+p.getAge()); } } } class PersonHandler extends DefaultHandler{ private List<Person> persons; private Person person; private String tag; //存儲操做標籤 public List<Person> getPersons() { return persons; } @Override public void startDocument() throws SAXException { persons = new ArrayList<Person>(); //System.out.println("---解析文檔開始---"); } @Override public void endDocument() throws SAXException { //System.out.println("---解析文檔結束---"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // super.startElement(uri, localName, qName, attributes); System.out.println(qName+ "--->解析開始 "); if (null != qName){ tag = qName; //存儲 if (tag.equals("person")){ person = new Person(); } } } @Override public void characters(char[] ch, int start, int length) throws SAXException { String contents = new String(ch,start,length).trim(); if (null != tag) { //處理了空 if (tag.equals("name")) { person.setName(contents); } else if (tag.equals("age")) { if (contents.length() > 0) { person.setAge(Integer.valueOf(contents)); } } } } @Override public void endElement(String uri, String localName, String qName) throws SAXException { //super.endElement(uri, localName, qName); System.out.println(qName+ "--->解析結束"); if (null != qName) { if (qName.equals("person")) { persons.add(person); } } tag = null; } }