Dom4jApp.java 解析和创建XML

package cn.studio.dom4jDemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentFactory;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jApp {
 public Dom4jApp() {

 }

 public static void parseXML(String name) {
  SAXReader parser = new SAXReader();

  InputStream in = Dom4jApp.class.getClassLoader().getResourceAsStream(
    name);
  try {
   Document doc = parser.read(in);
   Element rootElement = doc.getRootElement();
   System.out.println("rootElemnt:" + rootElement.getName());
   List<Element> list = rootElement.elements();
   for (Element e : list) {
    System.out.println(e.getName());
    List<Attribute> attrList = e.attributes();
    for (Attribute a : attrList) {
     System.out.println(a.getName() + ":" + a.getValue());
    }

    Iterator<Element> iterator = e.elementIterator();
    while (iterator.hasNext()) {
     Element child = iterator.next();
     String childName = child.getName();
     String childText = child.getText();
     System.out.println(childName + "--------" + childText);

    }
   }

  } catch (DocumentException e) {
   e.printStackTrace();
  }

 }

 public static void createXML() {
  DocumentFactory f = new DocumentFactory();
  Document doc = f.createDocument();
  doc.addComment("个人信息xml文档:");
  /**
   * 设置root元素
   */
  Element root = doc.addElement("person-information");
  /**
   * 设置第一个儿子元素
   */
  Element p1 = root.addElement("person");
  p1.addComment("第一个人");
  p1.addAttribute("pid", "1");
  /**
   * 设置孙子元素
   */
  Element name1 = p1.addElement("name");
  name1.setText("lyc");
  Element sex1 = p1.addElement("sex");
  sex1.setText("男");
  Element age1 = p1.addElement("age");
  age1.setText("23");
  Element birthday1 = p1.addElement("birthday");
  birthday1.setText("1989-11-20");
  Element telphone1 = p1.addElement("telphone");
  telphone1.setText("15115672844");
  /**
   * 设置第二个儿子元素
   */
  Element p2 = root.addElement("person");
  p2.addComment("第二个人");
  p2.addAttribute("pid", "2");
  /**
   * 设置孙子元素
   */
  Element name2 = p2.addElement("name");
  name2.setText("fx");
  Element sex2 = p2.addElement("sex");
  sex2.setText("女");
  Element age2 = p2.addElement("age");
  age2.setText("23");
  Element birthday2 = p2.addElement("birthday");
  birthday2.setText("1989-12-01");
  Element telphone2 = p2.addElement("telphone");
  telphone2.setText("15178784949");

  Element p3 = root.addElement("person");
  p3.addComment("第三个人");
  p3.addAttribute("pid", "3");
  Element name3 = p3.addElement("name");
  name3.setText("cn");
  Element sex3 = p3.addElement("sex");
  sex3.setText("女");
  Element age3 = p3.addElement("age");
  age3.setText("22");
  Element birthday3 = p3.addElement("birthday");
  birthday3.setText("1990-10-20");
  Element telphone3 = p3.addElement("telphone");
  telphone3.setText("15888663245");

  /**
   * 设置第四个儿子元素,修改元素
   */

  Element p4 = p3.createCopy();
  p4.addComment("第四个人");
  p4.addAttribute("pid", "4");
  p4.element("name").setText("lq");
  p4.element("birthday").setText("1989-08-10");
  root.add(p4);

  /**
   * 定义输入格式(编码,是否缩进,缩进的间距,换行输出?)
   */

  OutputFormat format = new OutputFormat();
  format.setEncoding("utf-8");
  format.setIndent(true);
  format.setIndent("  ");
  format.setNewlines(true);
  format.setSuppressDeclaration(true);

  try {
   OutputStream os = new FileOutputStream("src/people.xml");
   XMLWriter writer = new XMLWriter(os, format);
   writer.write(doc);
   writer.close();
   os.close();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  createXML();
  parseXML("people.xml");
 }
}

原文地址:https://www.cnblogs.com/33blog/p/2614280.html