zoukankan      html  css  js  c++  java
  • 简单的java使用SAX解析xml

    1.新建一个SAXTest类,继承import org.xml.sax.helpers.DefaultHandler类

     1 package com.qiao.SrpingSource;
     2 
     3 import org.xml.sax.Attributes;
     4 import org.xml.sax.SAXException;
     5 import org.xml.sax.helpers.DefaultHandler;
     6 
     7 public class SAXTest extends DefaultHandler {
     8 
     9     private String currentTag ;
    10     
    11     /**
    12      * 开始读取文档,通常做一些初始化工作
    13      */
    14     @Override
    15     public void startDocument() throws SAXException {
    16         System.out.println("----start document ---");
    17     }
    18 
    19     /**
    20      * 开始读取节点
    21      */
    22     @Override
    23     public void startElement(String uri, String localName, String qName,
    24             Attributes attributes) throws SAXException {
    25 
    26         System.out.println(qName+" --");
    27         currentTag=qName;
    28         if (qName.equals("name")) {
    29             //读取属性中的值
    30             if (attributes != null) {
    31                 for (int i = 0; i < attributes.getLength(); i++) {
    32                     System.out.println(" sss "+attributes.getQName(i)+ " " + attributes.getValue(i));
    33                 }
    34             }
    35         }
    36 
    37     }
    38 
    39     /**
    40      * 读取节点中的文本文档
    41      */
    42     @Override
    43     public void characters(char[] ch, int start, int length)
    44             throws SAXException {
    45         //当当前结点名称为name时,获取其节点中的内容
    46         if(currentTag.equals("name")){
    47             String content = new String(ch,start,length);
    48             System.out.println(content);
    49             
    50         }
    51 
    52     }
    53 
    54     /**
    55      * 读取节点结束时
    56      */
    57     @Override
    58     public void endElement(String uri, String localName, String qName)
    59             throws SAXException {
    60     }
    61 
    62     /**
    63      * 读取文档介绍时
    64      */
    65     @Override
    66     public void endDocument() throws SAXException {
    67 
    68         System.out.println(">> endDocument <<");
    69 
    70     }
    71 }

    2.xml文件为

      

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <class>
     3     <stu id="001">
     4         <name>Allen</name>
     5         <sex></sex>
     6         <age>20</age>
     7     </stu>
     8     <stu id="002">
     9         <name>namy</name>
    10         <sex></sex>
    11         <age>18</age>
    12     </stu>
    13     <stu id="003">
    14         <name>lufy</name>
    15         <sex></sex>
    16         <age>18</age>
    17     </stu>
    18 </class>

    3.调用方法

      

     1     @Test
     2     public void test() throws ParserConfigurationException, SAXException{
     3         
     4         SAXParserFactory factory = SAXParserFactory.newInstance();
     5         SAXParser parser = factory.newSAXParser();
     6         
     7         SAXTest handler = new SAXTest();
     8         
     9         try {
    10             parser.parse(new File("D:/eclipse/workspace/SpringSource/src/main/resource/test.xml"), handler);
    11             
    12         } catch (IOException e) {
    13             e.printStackTrace();
    14         }
    15         
    16     }

    4.运行结果

    ----start document ---
    class --
    stu --
    name --
    Allen             //读取到的name节点的值


    sex --
    age --
    stu --
    name --
    namy    //读取到的name节点的值


    sex --
    age --
    stu --
    name --
    lufy    //读取到的name节点的值


    sex --
    age --
    >> endDocument <<

  • 相关阅读:
    go语言正则
    20个简洁的js代码片段
    笔记本连接WiFi提示“无法连接此网络”解决方法总结
    gitlab-cicd常见问题
    Angular服务器渲染常遇的坑
    一次页面性能问题排查的过程
    短链接生成工具(好用)
    MySQL分页查询
    2021精选 Java面试题附答案(一)
    CSRF攻击原理及防护
  • 原文地址:https://www.cnblogs.com/Iqiaoxun/p/5400356.html
Copyright © 2011-2022 走看看