标签:
为什么使用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(); } }
标签:
原文地址:http://www.cnblogs.com/homesea/p/4730601.html