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("---------------------");
- }
- }
- }