DOM解析
- private static void dom() throws ParserConfigurationException, SAXException, IOException {
- //创建dom工厂
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- //创建dom解析器
- DocumentBuilder db = dbf.newDocumentBuilder();
- //将XML文档解析到内存中
- Document doc = db.parse("bac.xml");
- NodeList list = doc.getElementsByTagName("student");
- for(int i = 0; i < list.getLength(); i++) {//循环遍历元素节点
- Node node = list.item(i);
- NamedNodeMap attrMap = node.getAttributes();//获取属性集合
- Node attrNode = attrMap.getNamedItem("name");//name元素节点
- String name = attrNode.getNodeValue();//获得姓名
- attrNode = attrMap.getNamedItem("age");//age元素节点
- int age = Integer.parseInt(attrNode.getNodeValue());//获得年龄
- }
- }
SAX解析
- 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 SaxHandleDemo extends DefaultHandler {
- boolean flag = false;
- String currNode = "";
- @Override
- // 字符的打印
- public void characters(char[] ch, int start, int length)
- throws SAXException {
- if(flag) {
- String s = new String(ch, start, length);
- System.out.println(s);
- flag = false;
- }
- }
- @Override
- public void startElement(String uri, String localName, String qName,
- Attributes attributes) throws SAXException {
- if(qName.equals("name")) {
- flag = true;
- }
- }
- public static void main(String[] args) throws Exception {
- // 创建工厂类
- SAXParserFactory factory = SAXParserFactory.newInstance();
- // 创建SAX解析器,SAXParser包装 XMLReader 实现类的 API
- SAXParser sp = factory.newSAXParser();
- // 解析xml,并在参数中传入事件处理类对象。
- sp.parse("name.xml", new SaxHandleDemo());
- }
- }