Dom4j创建和解析XML

需要导入Dom4j的一个Jar文件:

Dom4j创建XML

package com.shengsiyuan.dom4j;

import java.io.FileOutputStream;
import java.io.FileWriter;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Test1
{
 public static void main(String[] args) throws Exception
 {
  // 创建文档并设置文档的根元素节点 :第一种方式
  // Document document = DocumentHelper.createDocument();
  //
  // Element root = DocumentHelper.createElement("student");
  //
  // document.setRootElement(root);

  // 创建文档并设置文档的根元素节点 :第二种方式
  Element root = DocumentHelper.createElement("student");
  Document document = DocumentHelper.createDocument(root);
        //给根元素添加属性
  root.addAttribute("name", "zhangsan");
        //给根元素添加子元素
  Element helloElement = root.addElement("hello");
  Element worldElement = root.addElement("world");
        //设置元素的文本内容
  helloElement.setText("hello");
  worldElement.setText("world");
        //给hello元素添加属性
  helloElement.addAttribute("age", "20");
        //将XML文档输出到命令行
  XMLWriter xmlWriter = new XMLWriter();
  xmlWriter.write(document);
  //指定输出格式,第一个参数表示缩进,第二个参数表示是否换行
  OutputFormat format = new OutputFormat("    ", true);
  //以字节流的方式输出到文件
  XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student2.xml"), format);
  xmlWriter2.write(document);
  //以字符流的方式输出到文件
  XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"), format);
  xmlWriter3.write(document);
  //xmlWriter3.flush();//当你使用字符流输出的时候,需要有这个刷新的方法,否则没有结果输出
  xmlWriter3.close();//close方法中包含xmlWriter3的flush方法,所以这个方法也可以

 }
}

 

Dom4j解析XML

package com.shengsiyuan.dom4j;

import java.io.File;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;

public class Test2
{
 public static void main(String[] args) throws Exception
 {
  //Dom4j解析XMl方式一:使用SAXReader解析XML
  SAXReader saxReader = new SAXReader();
  //读取文档
  Document doc = saxReader.read(new File("student2.xml"));
  //得到根元素
  Element root = doc.getRootElement();
  
  System.out.println("root element: " + root.getName());
  //得到根元素下的所有子元素
  List childList = root.elements();
  
  System.out.println(childList.size());
  //得到根元素下的所有名字为hello子元素
  List childList2 = root.elements("hello");
  
  System.out.println(childList2.size());
  //得到根元素下的第一个名字为hello的子元素
  Element first = root.element("hello");
  //得到hello元素下的属性为age的值
  System.out.println(first.attributeValue("age"));
  //遍历根元素下的子元素的第二种方法,第一种是使用List
  for(Iterator iter = root.elementIterator(); iter.hasNext();)
  {
   Element e = (Element)iter.next();
   //获得子元素属性为age的值,没有age属性,输出null
   System.out.println(e.attributeValue("age"));
  }
  
  System.out.println("---------------------------");
  
  //Dom4j解析XMl方式二:使用DOMReader解析XML
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = dbf.newDocumentBuilder();
  //在一个项目中使用了名字相同的一个类,使用包名区分
  org.w3c.dom.Document document = db.parse(new File("student2.xml"));
  
  DOMReader domReader = new DOMReader();
  
  //将JAXP的Document转换为dom4j的Document
  Document d = domReader.read(document);
  
  Element rootElement = d.getRootElement();
  
  System.out.println(rootElement.getName());
   }
}

 

你可能感兴趣的:(xml,exception,String,iterator,Class,文档)