XML--Jaxp-sax解析
XML--Jaxp-sax解析
HoneyHoney 发表于3年前
XML--Jaxp-sax解析
  • 发表于 3年前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Jaxp-sax

sax特点:1:只读

               2:仅向前,读完就删除内存中的数据

               3:占内存小

1:读取所有有用的数据

 @Test
 public void test1() throws Exception {
  // 创建解析器
  SAXParser sax = SAXParserFactory.newInstance().newSAXParser();
  // 2:解析xml文件
  sax.parse(new File("./file/users.xml"), new DefaultHandler() {
   private String qName = null;
 
   @Override
   public void startElement(String uri, String localName,String qName, Attributes attr) throws SAXException {
    if (qName.equals("user")) {
     // 获取id
     String id = attr.getValue("id");
     System.err.println(id);
    } else if (qName.equals("name") || qName.equals("age")) {
     this.qName = qName;
    }
   }
 
   @Override
   // uri命名空间,qName全限定名称
   public void endElement(String uri, String localName, String qName)
     throws SAXException {
    if (qName.equals("name") || qName.equals("age")) {
     this.qName = null;
    }
   }
 
   @Override
   public void characters(char[] ch, int start, int length)  throws SAXException {
    if (qName != null) {
     String val = new String(ch, start, length);
     System.err.println(val);
    }
   }
  });
 }

2.读取所有有用的数据封装到list<bea>

@Test
 public void query() throws Exception {
  final List<User> 
list = new ArrayList<User>();
  SAXParser sax = SAXParserFactory.newInstance().newSAXParser();
  sax.parse(new File("./file/users.xml"), new DefaultHandler() {
   User u = null;
   private String qName;
 
   @Override
   public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    if (qName.equals("user")) {
     u = new User();
     u.setId(attributes.getValue("id"));
    } else if (qName.equals("name") || qName.equals("age")) {
     this.qName = qName;
    }
   }
 
   @Override
   public void characters(char[] ch, int start, int length) throws SAXException {
    if (qName != null) {
     String val = new String(ch, start, length);
     if (qName.equals("name")) {
      u.setName(val);
     } else {
      u.setAge(Integer.valueOf(val));
     }
    }
   }
 
   @Override
   public void endElement(String uri, String localName, String qName) throws SAXException {
    if (qName.equals("name") || qName.equals("age")) {
     this.qName =null;
    }else if(qName.equals("user")){
     list.add(u);
    }
   }
  });
  System.err.println("封装的结果是:"+list);
 }


共有 人打赏支持
粉丝 0
博文 21
码字总数 6313
×
HoneyHoney
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: