Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6946112
  • 博文数量: 701
  • 博客积分: 10821
  • 博客等级: 上将
  • 技术积分: 12021
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-02 10:41
个人简介

中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。

文章分类

全部博文(701)

分类: Java

2013-04-27 16:07:02

这个是从JDK1.6支持的Stax解析,类似于Linux的pull,和sax的push有一些区别。但都是流模式。适用于J2ME。
http://hiyachen.cublog.cn
import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

public class StaxTest {
    // 获得解析器
    public static XMLStreamReader getStreamReader() {
        // String xmlFile = StaxTest.class.getResource("/").getFile()+ "users.xml";
        String xmlFile = "c:\\company.xml";
        XMLInputFactory factory = XMLInputFactory.newInstance();
        //XMLInputFactory factory = XMLInputFactory.newFactory();  // the all equal
        try {
            XMLStreamReader reader = factory.createXMLStreamReader(new FileReader(xmlFile));
            return reader;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (XMLStreamException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 列出所有用户名称
    public static void listNames() {
        XMLStreamReader reader = StaxTest.getStreamReader();
        // 遍历XML文档
        try {
            while (reader.hasNext()) {
                int event = reader.next();
                // 如果是元素的开始
                if (event == XMLStreamConstants.START_ELEMENT) {
                    // 列出所有用户名称
                    if ("user".equalsIgnoreCase(reader.getLocalName())) {
                        System.out.println("Name:" + reader.getAttributeValue(null, "name"));
                    }
                }
            }
            reader.close();
        } catch (XMLStreamException e) {
            e.printStackTrace();
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("**********Start****************");
        StaxTest.listNames();
        System.out.println("**********End****************");
    }

}

解析的文件:company.xml


   
        Manager
       
   

   
        Team Leader
       
       
   



参考文献:http://www.ibm.com/developerworks/cn/xml/x-stax1.html

阅读(2728) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~