XML是數據領域的Java語言,它使數據獨立於創建它的軟件和該軟件所在的操作系統,就像Java使軟件獨立於操作系統一樣。
“Jdom makes xml easy”, said by jason hunter.
Jdom是用Java語言讀、寫、操作XML的新API函數。Jdom是基於樹操作的純Java API,是一套用於解析、創建和實現xml的解決方案。
下載JDOM包:
官網地址:http://www.jdom.org
下載地址(直接在迅雷裏新建任務即可):http://www.jdom.org/dist/binary/jdom-1.1.1.zip
配置環境變量:將JDOM目錄下的build下的jdom.jar文件,拷貝到JAVA2SKD目錄下的jre/lib/ext目錄下;使用eclipse時,可手動添加到user liberary。
基本思路:用JDOM讀取XML文件,需先用org.jdom.input.SAXBuilder對象的build()方法創建Document對象,然後用Document類(org.jdom.Document)、Element類(org.jdom.Element)等方法讀取所需的內容。(後詳)
示例:創建一個硬盤上分區磁盤的信息XML文件;讀取其中信息,輸出到控制檯。
基本步驟:
//generateSample.java創建XML
//ReadSample.java 讀取XML中信息
一、JDOM創建XML
- //GenerateSample.java
- package xml;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.JDOMException;
- import org.jdom.output.Format;
- import org.jdom.output.XMLOutputter;
- public class GenerateSample
- {
- //創建XML
- public void BuildXMLDoc() throws IOException, JDOMException
- {
- // 創建根節點 root;
- Element root = new Element("HD");
- // 根節點添加到文檔中;
- Document Doc = new Document(root);
- // 此處 for 循環可替換成 遍歷 數據庫表的結果集操作;
- // 創建節點 DISK1;
- Element elementsC = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsC.setAttribute("name", "C");
- // 給DISK1節點添加子節點並賦值;
- elementsC.addContent(new Element("capacity").setText("8G"));
- elementsC.addContent(new Element("directories").setText("200"));
- elementsC.addContent(new Element("files").setText("5000"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsC);
- Element elementsD = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsD.setAttribute("name", "D");
- // 給DISK1節點添加子節點並賦值;
- elementsD.addContent(new Element("capacity").setText("20G"));
- elementsD.addContent(new Element("directories").setText("400"));
- elementsD.addContent(new Element("files").setText("1520"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsD);
- Element elementsE = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsE.setAttribute("name", "E");
- // 給DISK1節點添加子節點並賦值;
- elementsE.addContent(new Element("capacity").setText("20G"));
- elementsE.addContent(new Element("directories").setText("500"));
- elementsE.addContent(new Element("files").setText("10200"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsE);
- Element elementsF = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsF.setAttribute("name", "F");
- // 給DISK1節點添加子節點並賦值;
- elementsF.addContent(new Element("capacity").setText("30G"));
- elementsF.addContent(new Element("directories").setText("700"));
- elementsF.addContent(new Element("files").setText("30000"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsF);
- //定義輸出
- XMLOutputter XMLOut = new XMLOutputter();
- //設置格式
- Format format = Format.getPrettyFormat();
- format.setEncoding("UTF-8"); //設置xml文件的字符爲UTF-8
- format.setIndent(" "); //設置xml文件的縮進爲4個空格
- XMLOut.setFormat(format);
- // 輸出 user.xml 文件;
- XMLOut.output(Doc, new FileOutputStream("F:/sample.xml"));
- }
- public static void main(String[] args)
- {
- try
- {
- GenerateSample j2x = new GenerateSample();
- j2x.BuildXMLDoc(); //創建
- System.out.println("Sample.xml has already generated successfully!");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
結果:
① 產生F:/sample.xml文件
② 控制檯輸出結果:
Sample.xml has already generated successfully!
Sample.xml文件中內容:
- <?xml version="1.0" encoding="UTF-8"?>
- <HD>
- <disk name="C">
- <capacity>8G</capacity>
- <directories>200</directories>
- <files>5000</files>
- </disk>
- <disk name="D">
- <capacity>20G</capacity>
- <directories>400</directories>
- <files>1520</files>
- </disk>
- <disk name="E">
- <capacity>20G</capacity>
- <directories>500</directories>
- <files>10200</files>
- </disk>
- <disk name="F">
- <capacity>30G</capacity>
- <directories>700</directories>
- <files>30000</files>
- </disk>
- </HD>
二、
//ReadSapmle.java
- package xml;
- import java.util.List;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.input.SAXBuilder;
- public class ReadSample
- {
- public static void main(String[] args) throws Exception
- {
- SAXBuilder sb=new SAXBuilder();
- Document doc=sb.build("F:/sample.xml");//構造文檔對象
- Element root=doc.getRootElement();//獲得根元素
- List list=root.getChildren("disk");//取標記爲disk的所有元素
- for(int i=0;i<list.size();i++)
- {
- Element element=(Element)list.get(i);
- String name=element.getAttributeValue("name");
- String capacity=element.getChildText("capacity");
- String directories=element.getChildText("directories");
-
XML是數據領域的Java語言,它使數據獨立於創建它的軟件和該軟件所在的操作系統,就像Java使軟件獨立於操作系統一樣。
“Jdom makes xml easy”, said by jason hunter.
Jdom是用Java語言讀、寫、操作XML的新API函數。Jdom是基於樹操作的純Java API,是一套用於解析、創建和實現xml的解決方案。
下載JDOM包:
官網地址:http://www.jdom.org
下載地址(直接在迅雷裏新建任務即可):http://www.jdom.org/dist/binary/jdom-1.1.1.zip
配置環境變量:將JDOM目錄下的build下的jdom.jar文件,拷貝到JAVA2SKD目錄下的jre/lib/ext目錄下;使用eclipse時,可手動添加到user liberary。
基本思路:用JDOM讀取XML文件,需先用org.jdom.input.SAXBuilder對象的build()方法創建Document對象,然後用Document類(org.jdom.Document)、Element類(org.jdom.Element)等方法讀取所需的內容。(後詳)
示例:創建一個硬盤上分區磁盤的信息XML文件;讀取其中信息,輸出到控制檯。
基本步驟:
//generateSample.java創建XML
//ReadSample.java 讀取XML中信息
一、JDOM創建XML
- //GenerateSample.java
- package xml;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.JDOMException;
- import org.jdom.output.Format;
- import org.jdom.output.XMLOutputter;
- public class GenerateSample
- {
- //創建XML
- public void BuildXMLDoc() throws IOException, JDOMException
- {
- // 創建根節點 root;
- Element root = new Element("HD");
- // 根節點添加到文檔中;
- Document Doc = new Document(root);
- // 此處 for 循環可替換成 遍歷 數據庫表的結果集操作;
- // 創建節點 DISK1;
- Element elementsC = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsC.setAttribute("name", "C");
- // 給DISK1節點添加子節點並賦值;
- elementsC.addContent(new Element("capacity").setText("8G"));
- elementsC.addContent(new Element("directories").setText("200"));
- elementsC.addContent(new Element("files").setText("5000"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsC);
- Element elementsD = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsD.setAttribute("name", "D");
- // 給DISK1節點添加子節點並賦值;
- elementsD.addContent(new Element("capacity").setText("20G"));
- elementsD.addContent(new Element("directories").setText("400"));
- elementsD.addContent(new Element("files").setText("1520"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsD);
- Element elementsE = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsE.setAttribute("name", "E");
- // 給DISK1節點添加子節點並賦值;
- elementsE.addContent(new Element("capacity").setText("20G"));
- elementsE.addContent(new Element("directories").setText("500"));
- elementsE.addContent(new Element("files").setText("10200"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsE);
- Element elementsF = new Element("disk");
- // 給DISK1 節點添加屬性 id;
- elementsF.setAttribute("name", "F");
- // 給DISK1節點添加子節點並賦值;
- elementsF.addContent(new Element("capacity").setText("30G"));
- elementsF.addContent(new Element("directories").setText("700"));
- elementsF.addContent(new Element("files").setText("30000"));
- // 給父節點disk添加disk子節點;
- root.addContent(elementsF);
- //定義輸出
- XMLOutputter XMLOut = new XMLOutputter();
- //設置格式
- Format format = Format.getPrettyFormat();
- format.setEncoding("UTF-8"); //設置xml文件的字符爲UTF-8
- format.setIndent(" "); //設置xml文件的縮進爲4個空格
- XMLOut.setFormat(format);
- // 輸出 user.xml 文件;
- XMLOut.output(Doc, new FileOutputStream("F:/sample.xml"));
- }
- public static void main(String[] args)
- {
- try
- {
- GenerateSample j2x = new GenerateSample();
- j2x.BuildXMLDoc(); //創建
- System.out.println("Sample.xml has already generated successfully!");
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- }
結果:
① 產生F:/sample.xml文件
② 控制檯輸出結果:
Sample.xml has already generated successfully!
Sample.xml文件中內容:
- <?xml version="1.0" encoding="UTF-8"?>
- <HD>
- <disk name="C">
- <capacity>8G</capacity>
- <directories>200</directories>
- <files>5000</files>
- </disk>
- <disk name="D">
- <capacity>20G</capacity>
- <directories>400</directories>
- <files>1520</files>
- </disk>
- <disk name="E">
- <capacity>20G</capacity>
- <directories>500</directories>
- <files>10200</files>
- </disk>
- <disk name="F">
- <capacity>30G</capacity>
- <directories>700</directories>
- <files>30000</files>
- </disk>
- </HD>
二、
//ReadSapmle.java
- package xml;
- import java.util.List;
- import org.jdom.Document;
- import org.jdom.Element;
- import org.jdom.input.SAXBuilder;
- public class ReadSample
- {
- public static void main(String[] args) throws Exception
- {
- SAXBuilder sb=new SAXBuilder();
- Document doc=sb.build("F:/sample.xml");//構造文檔對象
- Element root=doc.getRootElement();//獲得根元素
- List list=root.getChildren("disk");//取標記爲disk的所有元素
- for(int i=0;i<list.size();i++)
- {
- Element element=(Element)list.get(i);
- String name=element.getAttributeValue("name");
- String capacity=element.getChildText("capacity");
- String directories=element.getChildText("directories");
- String files=element.getChildText("files");
- System.out.println("磁盤信息:");
- System.out.println("分區盤符:"+name);
- System.out.println("分區容量:"+capacity);
- System.out.println("目錄數:"+directories);
- System.out.println("文件數:"+files);
- System.out.println("---------------------");
- }
- }
- }
- String files=element.getChildText("files");
- System.out.println("磁盤信息:");
- System.out.println("分區盤符:"+name);
- System.out.println("分區容量:"+capacity);
- System.out.println("目錄數:"+directories);
- System.out.println("文件數:"+files);
- System.out.println("---------------------");
- }
- }
- }