標籤:
為什麼使用xml作為資料交換?為什麼用java解析xml?為什麼用dom4J解析xml?dom解析和sax解析到底有什麼區別?
帶著這樣的問題去學習,你發現這樣的學習是最高效的
首先第一個問題:為什麼使用xml作為資料交換
首先xml是一種無平台限制,無語言限制,無系統限制.使得xml可以在不同語言寫的系統進行資料的交換,不同語言寫的系統之間需求是不會改變,可能xml這種傳輸資料的介質會被其他的替代.比如json,可能json也會面臨被替代.方式改變.但是需求是不會改變的.而且xml樹節點的結構滿足soap(simple object access protocol)簡易物件存取通訊協定 (SOAP).
第二個問題:為什麼使用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(); } }
java解析xml檔案