XML 读写-JDOM和DOM4j

一、JDOM的XML读写

1.JDOM的XML 读

 1 import java.io.File;
 2 import java.io.IOException;
 3 import java.util.Iterator;
 4 import java.util.List;
 5 import org.jdom.Document;
 6 import org.jdom.Element;
 7 import org.jdom.JDOMException;
 8 import org.jdom.input.SAXBuilder;
 9 public class JdomReadXml {
10  /**
11   * @param args
12   */
13  public static void main(String[] args) {
14   /**
15    * <?xml version="1.0" encoding="UTF-8"?> <actions m="001"><action
16    * path="/test" class="com.mystruts.demo.LoginAction"><forward
17    * name="success" url="test.jsp" /><forward name="failure"
18    * url="failure.jsp" /></action><action path="/user"
19    * class="com.mystruts.demo.UserAction"><forward name="success"
20    * url="test.jsp" /><forward name="failure" url="failure.jsp" /></action></actions>
21    */
22   SAXBuilder sax = new SAXBuilder();
23   Document doc;
24   try {
25    try {
26     doc = sax.build(new File("mystruts.xml"));
27     Element root = doc.getRootElement();
28     List actions = root.getChildren();
29     // 遍历获取根节点下的一级子节点,并作为入参传入递归方法
30     for (Iterator i = actions.iterator(); i.hasNext();) {
31      Element action = (Element) i.next();
32      System.out.println(action.getAttributeValue("path"));
33      System.out.println(action.getAttributeValue("class"));
34      List forwards = action.getChildren();
35      for (Iterator j = forwards.iterator(); j.hasNext();) {
36       Element forward = (Element) j.next();
37       System.out.println(forward.getAttributeValue("name"));
38       System.out.println(forward.getAttributeValue("url"));
39      }
40     }
41    } catch (IOException e) {
42     // TODO Auto-generated catch block
43     e.printStackTrace();
44    }
45   } catch (JDOMException e) {
46    e.printStackTrace();
47   }
48  }
49 }

2.1.JDOM的XML 写

import java.io.File;
import java.io.FileWriter;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class JdomWriteXml {
 /**
  * @param args
  */
 public static void main(String[] args) {
  SAXBuilder sb = new SAXBuilder();
  Element actions = new Element("actions");
  Document document = new Document(actions);
  Element action1 = new Element("action");
  actions.addContent(action1);
  Attribute path_atbt1 = new Attribute("path", "/test");
  Attribute class_atbt1 = new Attribute("class",
    "com.mystruts.demo.LoginAction");
  action1.setAttribute(path_atbt1);
  action1.setAttribute(class_atbt1);
  Element action1_forward1 = new Element("forward");
  action1.addContent(action1_forward1);
  Attribute action1_forward1_name_atbt1 = new Attribute("name", "success");
  Attribute action1_forward1_url_atbt1 = new Attribute("url", "test.jsp");
  action1_forward1.setAttribute(action1_forward1_name_atbt1);
  action1_forward1.setAttribute(action1_forward1_url_atbt1);
  Element action1_forward2 = new Element("forward");
  action1.addContent(action1_forward2);
  Attribute action1_forward1_name_atbt2 = new Attribute("name", "failure");
  Attribute action1_forward1_url_atbt2 = new Attribute("url",
    "failure.jsp");
  action1_forward2.setAttribute(action1_forward1_name_atbt2);
  action1_forward2.setAttribute(action1_forward1_url_atbt2);
  Element action2 = new Element("action");
  actions.addContent(action2);
  Attribute path_atbt2 = new Attribute("path", "/user");
  Attribute class_atbt2 = new Attribute("class",
    "com.mystruts.demo.UserAction");
  action2.setAttribute(path_atbt2);
  action2.setAttribute(class_atbt2);
  Element action2_forward1 = new Element("forward");
  action2.addContent(action2_forward1);
  Attribute action2_forward1_name_atbt1 = new Attribute("name", "success");
  Attribute action2_forward1_url_atbt1 = new Attribute("url", "test.jsp");
  action2_forward1.setAttribute(action2_forward1_name_atbt1);
  action2_forward1.setAttribute(action2_forward1_url_atbt1);
  Element action2_forward2 = new Element("forward");
  action2.addContent(action2_forward2);
  Attribute action2_forward1_name_atbt2 = new Attribute("name", "failure");
  Attribute action2_forward1_url_atbt2 = new Attribute("url",
    "failure.jsp");
  action2_forward2.setAttribute(action2_forward1_name_atbt2);
  action2_forward2.setAttribute(action2_forward1_url_atbt2);
  Attribute root_atbt1 = new Attribute("m", "001");
  actions.setAttribute(root_atbt1);
  try {
   File f1 = new File("mystruts.xml");
   // XMLOutputter xo=new XMLOutputter(" ",true,"GB2312");
   XMLOutputter xo = new XMLOutputter();
   FileWriter fw = new FileWriter(f1);
   xo.output(document, fw);
   fw.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  // System.out.println(document.toString());
 }
}

二DOM4j读写Xml

1.DOM4j读Xml

import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dm4jReadXml {
 /**
  * @param args
  */
 public static void main(String[] args) {
  // dom4j读xml,解析xml
  /**
   * <?xml version="1.0" encoding="UTF-8"?> <actions><action path="/test"
   * class="com.mystruts.demo.LoginAction"><forward name="success"
   * url="hello.jsp"/><forward name="fail" url="fail.jsp"/></action><action
   * path="/user" class="com.mystruts.demo.UserAction"><forward
   * name="success" url="list.jsp"/><forward name="fail" url="fail.jsp"/></action></actions>
   */
  SAXReader saxReader = new SAXReader();
  try {
   Document document = saxReader.read(new File("d://mystruts.xml"));
   Element root = document.getRootElement();
   List actions = root.elements("action");
   for (int i = 0; i < actions.size(); i++) {
    Element action = (Element) actions.get(i);
    System.out.println("action.path=="
      + action.attributeValue("path"));
    System.out.println("action.class=="
      + action.attributeValue("class"));
    List forwards = action.elements("forward");
    for (int j = 0; j < forwards.size(); j++) {
     Element forward = (Element) forwards.get(j);
     System.out.println("forward.name=="
       + forward.attributeValue("name"));
     System.out.println("forward.url=="
       + forward.attributeValue("url"));
    }
   }
  } catch (DocumentException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

2.DOM4j写Xml

import java.io.File;
import java.io.FileWriter;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
public class DOM4j {
 public static void main(String[] args) {
  // dom4j解析xml测试
  // 1. dom4j写xml
  /*
   * <?xml version="1.0" encoding="UTF-8"?> <actions> <action path="/test"
   * class="com.mystruts.demo.LoginAction"> <forward name="success"
   * url="hello.jsp"/> <forward name="fail" url="fail.jsp"/> </action>
   * <action path="/user" class="com.mystruts.demo.UserAction"> <forward
   * name="success" url="list.jsp"/> <forward name="fail" url="fail.jsp"/>
   * </action> </actions>
   */
  Document document = DocumentHelper.createDocument();
  Element actionsElement = document.addElement("actions");
  Element actionElement1 = actionsElement.addElement("action");
  actionElement1.addAttribute("path", "/test");
  actionElement1.addAttribute("class", "com.mystruts.demo.LoginAction");
  Element forwardElement1 = actionElement1.addElement("forward");
  forwardElement1.addAttribute("name", "success");
  forwardElement1.addAttribute("url", "hello.jsp");
  Element forwardElement2 = actionElement1.addElement("forward");
  forwardElement2.addAttribute("name", "fail");
  forwardElement2.addAttribute("url", "fail.jsp");
  Element actionElement2 = actionsElement.addElement("action");
  actionElement2.addAttribute("path", "/user");
  actionElement2.addAttribute("class", "com.mystruts.demo.UserAction");
  Element forwardElement21 = actionElement2.addElement("forward");
  forwardElement21.addAttribute("name", "success");
  forwardElement21.addAttribute("url", "list.jsp");
  Element forwardElement22 = actionElement2.addElement("forward");
  forwardElement22.addAttribute("name", "fail");
  forwardElement22.addAttribute("url", "fail.jsp");
  try {
   /** 将document中的内容写入文件中 */
   XMLWriter writer = new XMLWriter(new FileWriter(new File(
     "d://mystruts.xml")));
   writer.write(document);
   writer.close();
   /** 执行成功,需返回1 */
  } catch (Exception ex) {
   ex.printStackTrace();
  }
  System.out.println(document.asXML());
 }
}
时间: 2024-08-07 04:29:51

XML 读写-JDOM和DOM4j的相关文章

java操作xml方式比较与详解(DOM、SAX、JDOM、DOM4J)

java中四种操作(DOM.SAX.JDOM.DOM4J)xml方式的比较与详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便

dom、SAX、Jdom、dom4j四种解析xml方式简单总结

1,dom和sax是java官方提供的解析方式,不需要导入额外jar包,dom甚至一种标准. dom是一次性将整个xml文件dom结构加载进内存,因此比较占空间. 优点: *形成了树结构,直观好理解,代码更易编写 *解析过程中树结构保留在内存中,方便修改 缺点: !当Xml文件过大时,对内存消耗过大,容易影响解析性能并造成内存溢出. 2,sax是一种基于事件驱动的xml解析方式.在使用是需要编写专门的handler,在文档开头会触发startDocument()方法.解析到节点除法startEl

XML学习笔记(五):使用 jdom和dom4j 解析XML

XML解析的详细分析与jaxp解析XML详见:XML学习笔记(四):使用 DOM和SAX 解析XML 一.JDom 1.创建XML文件: 1)Document类即代表整个XML文档,把生成的 Document 利用 XMLOutputter 类输出即可. 2)映射关系:元素:Element:属性:Attribute:注解:Comment:文本信息:Text: 3)注意:addContent()是追加,setContent()会覆盖. /** * 创建XML * * @throws IOExcep

对DOM,SAX,JDOM,DOM4J四种方法解析XML文件的分析

---恢复内容开始--- 1.DOM 与平台无关的官方解析方式 DOM是一次性把xml文件加载到内存中,形成一个节点树 对内存有要求 2.SAX java提供的基于事件驱动的解析方式 每次遇到一个标签,会触发相应的事件方法 3.扩展方法JDOM,DOM4J 在基础方法上扩展出来的方法,只有Java平台有 ---恢复内容结束--- 原文地址:https://www.cnblogs.com/songaodi/p/9330815.html

java xml解析方式(DOM、SAX、JDOM、DOM4J)

XML值可扩展标记语言,是用来传输和存储数据的. XMl的特定: XMl文档必须包含根元素.该元素是所有其他元素的父元素.XML文档中的元素形成了一颗文档树,树中的每个元素都可存在子元素. 所有XML元素都必须有关闭标签. XML标签对大小写敏感,并且所有属性值date都需加引号. XML元素: XMl元素是只从包括开始标签到结束标签的部分,元素可包含其他元素.文本或两者都包含,也可拥有属性. XML解析 基础方法:DOM.SAX DOM解析:平台无关的官方解析方式 SAX解析:Java中基于事

Java 解析XML的几种方式:DOM、SAX、JDOM和DOM4J。

归纳总结Java解析XML主要有四中方式,分别是DOM.SAX.JDOM和DOM4J.其中DOM和SAX是官方包自带,另外两个JDOM和DOM4J是第三方包. 一.此篇测试代码用到的XML情况 . 1.XML内容展示 1 <?xml version="1.0" encoding="UTF-8"?> 2 <class> 3 <people> 4 <name>Jack</name> 5 <age>1

打造完美的xml技术解决方案(dom4j/xstream)

转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专门的解析程序. XML 出现以后解决了这个问题,程序面对的是有固定格式的 XML 文件,只要通过标准 API 就可以进行 XML 文件的处理. XML 文件在案例系统中应用是很广泛的,比如 ClientConfig.xml . ServerConfig.xml 文件就是使用 XML 文件来做配置文件

DOM、JDOM、DOM4J的区别

dom是解析xml的底层接口之一(另一种是sax)   而jdom和dom4j则是基于底层api的更高级封装    dom是通用的,而jdom和dom4j则是面向Java语言的       DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的.DOM 以及

XML_01_DOM、JDOM、DOM4J的区别

dom是解析xml的底层接口之一(另一种是sax)   而jdom和dom4j则是基于底层api的更高级封装    dom是通用的,而jdom和dom4j则是面向java语言的        DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何 工作.由于它是基于信息层次的,因而 DOM 被认为是基于树或基于对象的.DOM