日常開發中常出現需要傳輸和存儲數據的需求。這時候常用到的一種方式就是XML
XML是可擴展標記語言,標準通用標記語言的子集,是一種用於標記電子文件使其具有結構性的標記語言。
在電子計算機中,標記指計算機所能理解的信息符號,通過此種標記,計算機之間可以處理包含各種的信息比如文章等。它可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。 它非常適合萬維網傳輸,提供統一的方法來描述和交換獨立於應用程序或供應商的結構化數據。是Internet環境中跨平臺的、依賴於內容的技術,也是當今處理分佈式結構信息的有效工具。早在1998年,W3C就發佈了XML1.0規範,使用它來簡化Internet的文檔信息傳輸。
眾所周知,現在生成解析XML的方法越來越多,但主流的方法也就四種,即:DOM、SAX、JDOM和DOM4J
今天使用JDOM的方式
JDOM(Java-based Document Object Model)
JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互並且比使用DOM實現更快。由於是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規範請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發。
JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。
JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對於大多數Java/XML應用程序來說當然是有用的,並且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(儘管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼。
【優點】
①使用具體類而不是接口,簡化了DOM的API。
②大量使用了Java集合類,方便了Java開發人員。
【缺點】
①沒有較好的靈活性。
②性能較差。
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.Text;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/**
*
* 使用jdom創建XML文件
*
* @author Administrator 2017年4月24日 16:25:24
*
*/
public class CreateXMLOutput {
public void BuildXMLDoc() throws IOException, JDOMException {
String realPath = "D:\\程序測試下載";
Document doc = new Document();
Namespace ns = Namespace.getNamespace("http://www.bromon.org");
Namespace ns2 = Namespace.getNamespace("other", "http://www.w3c.org");
Element root = new Element("regInners");
// root.addNamespaceDeclaration(ns2);
doc.setRootElement(root);
Element el1 = new Element("regInner");
// el1.setAttribute("屬性", "屬性一");
Text text1 = new Text("元素值");
Element em = new Element("元素名1").addContent("元素值1");
el1.addContent(em);
Element em3 = new Element("元素名3").addContent("元素值3");
el1.addContent(em3);
Element em4 = new Element("元素名4").addContent("元素值4");
el1.addContent(em4);
Element el11 = new Element("子元素");
el1.addContent(el11);
Element el12 = new Element("子元素1").addContent("1");
;
Element el13 = new Element("子元素2").addContent("2");
;
Element el14 = new Element("子元素3").addContent("3");
;
el11.addContent(el12);
el11.addContent(el13);
el11.addContent(el14);
root.addContent(el1);
Format format = Format.getPrettyFormat();
format.setEncoding("GB2312");
XMLOutputter outputter = new XMLOutputter(format);
FileOutputStream out = new FileOutputStream(realPath
+ "\\createXML.xml");
outputter.output(doc, out);
out.close();
}
/**
* @param args
*/
public static void main(String[] args) {
try {
CreateXMLOutput j2x = new CreateXMLOutput();
System.out.println("生成 xml 文件成功,請查看項目根目錄XMLOutput.xml文件!");
j2x.BuildXMLDoc();
} catch (Exception e) {
e.printStackTrace();
}
}
}
這是上面源碼生成的XML樣式
感謝大家關注
“點讀微訊”