java解析xml文件

    为什么使用xml作为数据交换?为什么用java解析xml?为什么用dom4J解析xml?dom解析和sax解析到底有什么区别?

    带着这样的问题去学习,你发现这样的学习是最高效的

    首先第一个问题:为什么使用xml作为数据交换

       首先xml是一种无平台限制,无语言限制,无系统限制.使得xml可以在不同语言写的系统进行数据的交换,不同语言写的系统之间需求是不会改变,可能xml这种传输数据的介质会被其他的替代.比如json,可能json也会面临被替代.方式改变.但是需求是不会改变的.而且xml树节点的结构满足soap(simple object access protocol)简单对象访问协议.

    第二个问题:为什么使用java解析xml

       你可以用任何一种语言,这个没有做要求

    第三个问题:为什么用dom4j解析xml

       java的xml解析有dom解析和sax解析,dom解析又有dom4j和jdom解析,这两者都差不都.使用哪一种看个人需求.(回答在第四个问题);

    第四个问题:dom解析和sax解析到底有是区别?

      dom解析会把整个文档树都加到内存,而sax是属于事件驱动型的.当遇到事件的触发才会回调函数.xml文件内容比较大的时候.dom解析就会很慢,sax就会比较快.

    实用dom4j创建xml代码

private Document document;
    @Override
    public void createXml(String fileName) {
        // 获取document
        this.document = DocumentHelper.createDocument();
        // 创建根节点
        Element employees = document.addElement("employees");
        // 创建下一个节点
        Element em1 = employees.addElement("employee");
        Element name1 = em1.addElement("name");
        Element age1 = em1.addElement("age");
        Element em2 = employees.addElement("employee");
        Element name2 = em2.addElement("name");
        Element age2 = em2.addElement("age");
        // 创建节点元素的属性
        name1.setText("jack");
        age1.setText("20");
        name2.setText("amy");
        age2.setText("30");
        // 创建流
        try {
            
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File(fileName)));
            xmlWriter.write(document);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 写出去
    }

  实用dom4j解析xml代码

@Override
    public void praserXml(String fileName) {
        File xmlFile = new File(fileName);
        SAXReader sax = new SAXReader();
        try {
            document = sax.read(xmlFile);
            Element root = document.getRootElement();
            for(Iterator<Element> ite = root.elementIterator();ite.hasNext();){
                Element element = ite.next();
                for(Iterator<Element> it = element.elementIterator();it.hasNext();){
                    Element ele = it.next();
                    System.out.println(ele.getName() + "--" + ele.getText());
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        
    }

 

posted @ 2015-08-14 17:13  如果可以在重来  阅读(590)  评论(0编辑  收藏  举报