zoukankan      html  css  js  c++  java
  • 解析xml

    解析xml使用两种方式

    第一

    使用XMLStreamReader,使用光标的方式

    @Test
        public void testread() throws Exception {
            InputStream ios =  XMLRead.class.getClassLoader().getResourceAsStream("persion.xml");
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLStreamReader reader = factory.createXMLStreamReader(ios);
            while(reader.hasNext()){
                int type = reader.next();
                if(type==XMLStreamReader.START_ELEMENT){
                    System.out.println(reader.getName());
                }else if(type==XMLStreamReader.CHARACTERS){
                    System.out.println(reader.getText().trim());
                }else if(type==XMLStreamReader.END_ELEMENT){
                    System.out.println("/"+reader.getName());
                }
            }
    
        }

    第二

    XMLEventReader使用基于迭代模型的方式

    /**
         * 基于迭代模型的方式
         * @throws Exception
         */
        @Test
        public void testread3() throws Exception {
            InputStream ios =  XMLRead.class.getClassLoader().getResourceAsStream("persion.xml");
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLEventReader reader = factory.createXMLEventReader(ios);
            while(reader.hasNext()){
                XMLEvent eve = reader.nextEvent();
                if(eve.isStartElement()){
                    String name = eve.asStartElement().getName().toString();
                    System.out.println(name);
                }
            }
    
        }

    优化后迭代模型

    @Test
        public void testread4() throws Exception {
            InputStream ios = XMLRead.class.getClassLoader().getResourceAsStream("persion.xml");
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLEventReader reader = factory.createFilteredReader(factory.createXMLEventReader(ios), new EventFilter() {
                @Override
                public boolean accept(XMLEvent event) {
                    if (event.isStartElement()) {
                        return true;
                    }
                    return false;
                }
            });
            
            int num = 0;
            while (reader.hasNext()) {
                XMLEvent eve = reader.nextEvent();
                if (eve.isStartElement()) {
                    String name = eve.asStartElement().getName().toString();
                    System.out.println(name);
                }
                num++;
            }
            System.out.println(num);
        }
  • 相关阅读:
    页眉插入图片,文字和页号(码)的设置
    MIT_JOS_Lab5
    MIT_JOS_Lab4_PartB_and_PartC
    MIT_JOS_Lab4_PartA
    Monte Carlo Integration
    A strategy to quantify embedding layer
    From DFA to KMP algorithm
    A problem of dimension in Vector Space and It's nullspace
    Pytorch 模型的存储与加载
    Jensen's inequality 及其应用
  • 原文地址:https://www.cnblogs.com/songfahzun/p/5944974.html
Copyright © 2011-2022 走看看