XML 被設計用來傳輸和存儲數據。 java
若是你須要在 HTML 文檔中顯示動態數據,那麼每當數據改變時將花費大量的時間來編輯 HTML。
經過 XML,數據可以存儲在獨立的 XML 文件中。這樣你就能夠專一於使用 HTML 進行佈局和顯示,並確保修改底層數據再也不須要對 HTML 進行任何的改變。
經過使用幾行 JavaScript,你就能夠讀取一個外部 XML 文件,而後更新 HTML 中的數據內容 web
2.XML 簡化數據共享 瀏覽器
在真實的世界中,計算機系統和數據使用不兼容的格式來存儲數據。
XML 數據以純文本格式進行存儲,所以提供了一種獨立於軟件和硬件的數據存儲方法。
這讓建立不一樣應用程序能夠共享的數據變得更加容易。 app
3.XML 簡化數據傳輸
經過 XML,能夠在不兼容的系統之間輕鬆地交換數據。
對開發人員來講,其中一項最費時的挑戰一直是在因特網上的不兼容系統之間交換數據。
因爲能夠經過各類不兼容的應用程序來讀取數據,以 XML 交換數據下降了這種複雜性。 dom
4.XML 簡化平臺的變動
升級到新的系統(硬件或軟件平臺),老是很是費時的。必須轉換大量的數據,不兼容的數據常常會丟失。
XML 數據以文本格式存儲。這使得 XML 在不損失數據的狀況下,更容易擴展或升級到新的操做系統、新應用程序或新的瀏覽器。 webapp
5.XML 使您的數據更有用
因爲 XML 獨立於硬件、軟件以及應用程序,XML 使您的數據更可用,也更有用。
不一樣的應用程序都可以訪問您的數據,不單單在 HTML 頁中,也能夠從 XML 數據源中進行訪問。
經過 XML,您的數據可供各類閱讀設備使用(手持的計算機、語音設備、新聞閱讀器等),還能夠供盲人或其餘殘障人士使用。 maven
users.xml 佈局
<?xml version="1.0" encoding="UTF-8"?> <root> <region city="chongqing"> <user loginName="xiaohong" password="321321" address="NO.1"/> <user loginName="xiaoming" password="321321" address="NO.2"/> <user loginName="daming" password="321321" address="NO.3"/> </region> <region city="dalian"> <user loginName="haige" password="321321" address="NO.4"/> <user loginName="rg" password="321321" address="NO.4"/> <user loginName="hg" password="321321" address="NO.5"/> <user loginName="ff" password="321321" address="NO.6"/> <user loginName="ll" password="321321" address="NO.7"/> </region> </root>
ReadXmlToJava.java 性能
package test.fortest; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import test.model.User; public class ReadXmlToJava { public static void main(String args[]) { Map<String, User> usersMap = new HashMap<String, User>(); SAXReader reader = new SAXReader(); String appFilePath = "D:"+File.separator + "ForLearn" + File.separator + "Example" + File.separator + "mavenEx" + File.separator + "exampleF" + File.separator + "src"+ File.separator + "main" + File.separator + "webapp" + File.separator + "WEB-INF" + File.separator + "users.xml"; try { //讀取xml文檔。 Document document = reader.read(new File(appFilePath)); //讀取根節點元素。 Element rootElement = document.getRootElement(); //讀取根元素的下面的全部子元素。 Iterator cityElements = rootElement.elementIterator(); while(cityElements.hasNext()) { Element cityElement = (Element) cityElements.next(); String city = cityElement.attributeValue("city"); Iterator userElements = cityElement.elementIterator(); while(userElements.hasNext()) { Element userElement = (Element) userElements.next(); User user = new User(); user.setLoginName(userElement.attributeValue("loginName")); user.setPassword(userElement.attributeValue("password")); user.setAddress(userElement.attributeValue("address")); usersMap.put(userElement.attributeValue("loginName"), user); } } System.out.println(appFilePath); System.out.println("usersMap size : " + usersMap.size()); User user = usersMap.get("xiaohong"); System.out.println("loginName : " + user.getLoginName() + " " + "password : " + user.getPassword() + " " + "address : " + user.getAddress()); } catch (DocumentException e) { e.printStackTrace(); } } }
user.java this
package test.model; import javax.persistence.Entity; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name = "users", schema = "public") public class User extends AbsEntity implements IEntity{ private String loginName; private String password; private String address; @ManyToOne private Role role; public String getLoginName() { return loginName; } public void setLoginName(String loginName) { this.loginName = loginName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } @Deprecated public String getDisplayString() { return "this is a user"; } }
D:\ForLearn\Example\mavenEx\exampleF\src\main\webapp\WEB-INF\users.xml usersMap size : 8 loginName : xiaohong password : 321321 address : NO.1
這裏用到SAXReader來讀取users.xml。users.xml裏面存放的是用戶的一些信息,每個〈user〉元素的屬性對應着實體Java類的user.java的一個屬性。
SAXReader是dom4j中的一個類,SAXReader主要用於解析XML文件,是當前比較流行的xml解決方案.
dom4j是一個很是很是優秀的Java XML API,用來讀寫XML文件的,具備性能優異、功能強大和極端易用使用的特色,同時它也是一個開放源代碼的軟件。