XML

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 存儲換行

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. XML簡介 以下內容來自于http://www.w3school.com.cn/xml 基本知識 XML 和...
    WebSSO閱讀 2,092評論 1 7
  • 經過兩天的奮戰(zhàn),終于把xml簡略的過了一遍。 1.1XML介紹 xml是Extensible Markup lan...
    Ystrator閱讀 1,029評論 0 2
  • 1. XML總結 1.1. XML簡介 XML : 可擴展的標記語言。(和HTML非常類似的) 可擴展的。 自定義...
    Ethan_Walker閱讀 3,375評論 0 12
  • 春開萬物竟生長,故人難覓舊時光。 回首向來蕭瑟處,縱然無悔亦蒼涼。 ----------題記 大部分人的青春都是帶...
    無邪天真閱讀 21,642評論 5 74
  • 醫(yī)學者的新(心)血路 文/Li霂 話說2016年一月份的一半都還沒有過呢,眾多醫(yī)務者,醫(yī)學...
    Li霂閱讀 621評論 2 3

友情鏈接更多精彩內容