`
alvinqq
  • 浏览: 184913 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JDOM解析XML

    博客分类:
  • java
阅读更多
package com.yujie.xml;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

/**
 * JDom操作xml文件工具 

1、创建的user.xml 

<?xml version="1.0" encoding="utf-8"?> 
<list> 
<user id="0"> 
<name>小鱼0</name> 
<age>28</age> 
<email>0106789@163.com</email> 
</user> 
<user id="1"> 
<name>小鱼1</name> 
<age>26</age> 
<email>0106789@163.com</email> 
</user> 
<user id="2"> 
<name>小鱼2</name> 
<age>26</age> 
<email>0106789@163.com</email> 
</user> 
</list> 

2追加后的user.xml 

<?xml version="1.0" encoding="gb2312"?> 
<list> 
<user id="0"> 
<name>小鱼0</name> 
<age>26</age> 
<email>0106789@163.com</email> 
</user> 
<user id="1"> 
<name>小鱼1</name> 
<age>26</age> 
<email>0106789@163.com</email> 
</user> 
<user id="2"> 
<name>小鱼2</name> 
<age>26</age> 
<email>0106789@163.com</email> 
</user> 
<user id="3"> 
<name>刘德华</name> 
<age>48</age> 
<email>AndyLiu@126.com</email> 
</user> 
</list> 

 * @author Administrator
 *
 */
public class JDom {
    // 创建XML
    public void BuildXMLDoc() throws IOException, JDOMException {
        // 创建根节点 root;
        Element root = new Element("list");
        // 根节点添加到文档中;
        Document Doc = new Document(root);
        // 此处 for 循环可替换成 遍历 数据库表的结果集操作;
        for (int i = 0; i < 3; i++) {
            // 创建节点 user;
            Element elements = new Element("user");
            // 给 user 节点添加属性 id;
            elements.setAttribute("id", "" + i);
            // 给 user 节点添加子节点并赋值;
            elements.addContent(new Element("name").setText("小鱼"+String.valueOf(i)));
            elements.addContent(new Element("age").setText("26"));
            elements.addContent(new Element("email").setText("0106789@163.com"));

            // 给父节点list添加user子节点;
            root.addContent(elements);
        }
        // 定义输出
        XMLOutputter XMLOut = new XMLOutputter();
        // 设置格式
        Format format = Format.getPrettyFormat();
        format.setEncoding("utf-8"); // 设置xml文件的字符为gb2312
        format.setIndent(" "); // 设置xml文件的缩进为4个空格

        XMLOut.setFormat(format);
        // 输出 user.xml 文件;
        XMLOut.output(Doc, new FileOutputStream("user.xml"));
    }

    // 读XML节点数据
    public void ReadXMLDoc() throws IOException, JDOMException {
        /** ***********将user.xml个别节点读出显示**************** */
        File fn = new File("user.xml");
        Document doc = null;
        // 建立构造器
        SAXBuilder sb = new SAXBuilder();
        // 判断文件是否存在
        if (fn.exists()) {
            try {
                // 读入指定文件
                doc = sb.build(new FileInputStream("user.xml"));
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            // 获得根结点
            Element root = doc.getRootElement();
            // 将根结点下的所有子节点放入List中
            List list = root.getChildren();

            for (int i = 0; i < list.size(); i++) {
                System.out.println("-----------------------");
                // 取得节点实例
                Element item = (Element) list.get(i);
                // 取得当前节点的子节点
                String sid = item.getAttribute("id").getValue();// 取得属性值
                System.out.println("id:" + sid);

                Element Name = item.getChild("name");
                String sname = Name.getText();// 取得当前节点的值
                System.out.println("Name:" + sname);
            }
        } else {
            System.out.println("Not found child element!");
        }

        /*
         * 将user.xml内容在控制台显示 //建立构造器 SAXBuilder builder = new SAXBuilder();
         * Document doc = null; //读入指定文件 doc = builder.build(new
         * FileInputStream("user.xml")); XMLOutputter fmt = new XMLOutputter();
         * Format format = Format.getPrettyFormat();
         * format.setEncoding("gb2312"); //设置xml文件的字符为gb2312 format.setIndent("
         * "); //设置xml文件的缩进为4个空格 fmt.setFormat(format); PrintWriter out=new
         * PrintWriter(System.out); //不加 中文会乱码 fmt.output(doc, out);
         */

    }

    // 在XML文件尾部追加
    public void AddXMLDoc() throws IOException, JDOMException {
        File fn = new File("user.xml");
        Document doc = null;
        SAXBuilder sb = new SAXBuilder();
        // 如果文件存在
        if (fn.exists()) {
            try {
                doc = sb.build(new FileInputStream("user.xml"));
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }

            Element root = doc.getRootElement();
            if (root.getContentSize() > 0) {
                List list = root.getChildren();
                Element elements = new Element("user");
                // 给 user 节点添加属性 id;
                elements.setAttribute("id", "" + list.size());
                elements.addContent(new Element("name").setText("刘德华"));
                elements.addContent(new Element("age").setText("48"));
                elements.addContent(new Element("email")
                        .setText("AndyLiu@126.com"));

                // 给父节点list添加user子节点;
                root.addContent(elements);
                // 设置输出格式
                Format f = Format.getPrettyFormat();
                f.setIndent(" ");
                f.setEncoding("utf-8");
                XMLOutputter output = new XMLOutputter(f);
                try {
                    output.output(doc, new FileOutputStream("user.xml"));
                } catch (Exception e) {
                    System.out.println(e.getMessage());
                }
            }
            // 如果文件不存在
            else {
                System.out.println("Not found child element!");
            }

        } else {
            System.out.println("找不到指定的文件!");
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            JDom jdom = new JDom();
            jdom.BuildXMLDoc(); //创建
            // jdom.AddXMLDoc(); //追加
            jdom.ReadXMLDoc();// 读取
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

分享到:
评论

相关推荐

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    用jdom解析xml

    **Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    基于java的开发源码-用jdom解析xml.zip

    基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...

    利用JDOM解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...

    java利用jdom解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...

    Jdom解析XML

    使用JDOM解析XML文档通常包括以下几个步骤: 1. 创建`SAXBuilder`实例,这是JDOM提供的解析器,可以将XML输入源转换为`Document`对象。 2. 使用`SAXBuilder`的`build`方法读取XML文件,生成`Document`对象。 3. ...

    JDOM解析xml文档实例(自己编写,仅供参考)

    1. `JDOMUtil.java`:这是一个Java类,包含了使用JDOM解析XML的主要代码。在这个例子中,我们将学习如何读取XML文件,创建一个`SAXBuilder`对象来构建XML文档的DOM(文档对象模型)表示,然后通过`Document`对象来...

    jdom解析xml文件小实例

    在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;...

    java 使用JDOM解析xml文件.docx

    Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    jdom解析XML(修改为比较通用的方法)

    **JDOM解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件等领域。在Java中,有多种解析XML的库,其中之一就是JDOM。JDOM是一个专为Java设计的XML API,它...

    Jdom解析xml案例

    ### JDOM解析XML的基本概念 1. **DOM(Document Object Model)**:DOM是一种树形结构,将XML文档解析为一系列的对象,这些对象可以被Java程序访问和操作。JDOM就是基于DOM模型的实现。 2. **Element**: 在JDOM中...

    jdom解析xml、dtd约束xml文件

    这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...

    jdom解析xml用到的jar包

    下面是一些使用JDOM解析XML的基本步骤: 1. **导入必要的JDOM库**:首先在Java源代码中导入JDOM相关的类,如: ```java import org.jdom.Document; import org.jdom.input.SAXBuilder; ``` 2. **创建SAXBuilder...

Global site tag (gtag.js) - Google Analytics