XML即可擴展標記語言(eXtensible Markup Language)。標記是指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種信息的文章等。如何定義這些標記,既可以選擇國際通用的標記語言,比如HTML,也可以使用象XML這樣由相關人士自由決定的標記語言,這就是語言的可擴展性。XML是從SGML中簡化修改出來的。它主要用到的有XML、XSL和XPath等。
XML是一種標記語言,很類似HTML
XML的設計宗旨是傳輸數據,而非顯示數據
XML標簽沒有被預定義。您需要自行定義標簽。
XML被設計為具有自我描述性。
XML是W3C的推薦標準
DOM4J 對xml進行操作
解析xml文件
SAXReader reader=new SAXReader();
Document doc=reader.read("book.xml");
獲取根節(jié)點
Element root = doc.getRootElement();
遍歷
List<Element> list=root.elements();//獲取所有的子節(jié)點
for (Element ele : list) {
List<Element> child = ele.elements();
for (Element element : child) {
element.getName();//獲取標簽的名稱
element.getText();//獲取標簽的內容
element.getNodeType();//獲取標簽的類型 1 代表元素類型 3 代表文本類型
}
}
查
Element ele=root.elementByID("1001");//根據ID快速獲取指定的元素
Element pwd=ele.element("標簽名");//獲取指定標簽名的元素
保存
OutputFormat format=OutputFormat.createPrettyPrint();//創(chuàng)建一個漂亮的格式
XMLWriter writer=new XMLWriter(new FileOutputStream("book.xml"),format);
writer.write(doc);//將doc對象寫入的xml文件中
添加
Element root=doc.getRootElement();
Element author=root.addElement("book");//添加一個book的子元素
刪除
Element root=doc.getRootElement();
Element ele=doc.elementByID("b2");
root.remove(ele);//刪除指定的子節(jié)點,需要通過父節(jié)點來刪除
ele.detach();//刪除所有的子節(jié)點,可以自己刪除自己
改
Element book=root.elementByID("b1");
Element name=book.element("name");
name.setText("西游記");
XPath
使用XPath對xml文件的元素進行導航,需要導包:jaxen.jar
Node password=doc.selectSingleNode("http://user[3]/aa/password");//選出單個節(jié)點
List<Node> list=doc.selectNodes("http://user");//選出多個節(jié)點
for (Node node : list) {
System.out.println(node.getName());
}
//表示//后所有的節(jié)點
*表示所有
aaa[1]表示第一個
aaa[last()]表示最后一個
bbb[@id="one"]表示屬性id為one 的bbb節(jié)點
屬性
查
Attribute name = ele.attribute("name");//獲取單個指定的屬性
List<Attribute> list = ele.attributes("name");//獲取所有指定的屬性
增
Element ele=root.elementByID("user");
ele.addAttribute("sex", "men");
刪
Element ele=root.elementByID("user");
ele.removeAttribute("sex");
改
Attribute name = ele.attribute("name");//獲取單個指定的屬性
name.setText("lisi");
Schema和DTD的區(qū)別
Schema是對XML文檔結構的定義和描述,其主要的作用是用來約束XML文件,并驗證XML文件有效性。DTD的作用是定義XML的合法構建模塊,它使用一系列的合法元素來定義文檔結構。它們之間的區(qū)別有下面幾點:
1、Schema本身也是XML文檔,DTD定義跟XML沒有什么關系,Schema在理解和實際應用有很多的好處。
2、DTD文檔的結構是“平鋪型”的,如果定義復雜的XML文檔,很難把握各元素之間的嵌套關系;Schema文檔結構性強,各元素之間的嵌套關系非常直觀。
3、DTD只能指定元素含有文本,不能定義元素文本的具體類型,如字符型、整型、日期型、自定義類型等。Schema在這方面比DTD強大。
4、Schema支持元素節(jié)點順序的描述,DTD沒有提供無序情況的描述,要定義無序必需窮舉排列的所有情況。Schema可以利用xs:all來表示無序的情況。
5、對命名空間的支持。DTD無法利用XML的命名空間,Schema很好滿足命名空間。并且,Schema還提供了include和import兩種引用命名空間的方法。
XML語法規(guī)則
所有 XML 元素都須有關閉標簽??
注釋:您也許已經注意到 XML 聲明沒有關閉標簽。這不是錯誤。聲明不屬于XML本身的組成部分。它不是 XML 元素,也不需要關閉標簽。
XML 標簽對大小寫敏感
XML 必須正確地嵌套
XML 文檔必須有根元素
XML 的屬性值須加引號
實體引用

XML 中的注釋
在 XML 中,空格會被保留
XML 以 LF 存儲換行