<?xml version="1.0" encoding="GB18030"?> <tarena> <job>java+3G</job> </tarena>
import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class SAXHandler extends HandlerBase { private static SAXHandler handler; static { if (handler == null) { handler = new SAXHandler(); } } public static SAXHandler getInstance() { return handler; } private Map<String, String> map = new HashMap<String, String>(); // 元素键 private String currentElement = ""; // 元素值 private String currentValue = ""; public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } public void startElement(String currentElement, AttributeList attrs) throws SAXException { this.currentElement = currentElement; } // 构造元素的值 public void characters(char[] ch, int start, int length) throws SAXException { currentValue = new String(ch, start, length); } // 当开始标签与结束标签时,存放标签体的值 public void endElement(String name) throws SAXException { if (currentElement.equals(name)) { map.put(currentElement, currentValue); } } public String value(String key) { return map.get(key); } public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { SAXHandler handler = SAXHandler.getInstance(); String path = "tarena.xml"; SAXParserFactory.newInstance().newSAXParser().parse( new InputSource(new FileReader(new File(path))), handler); System.out.println(handler.value("job")); } }