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

使用jdom解析XML

    博客分类:
  • JAVA
阅读更多
1. 创建XML
package jdom.test;  
  
import java.io.File;  
import java.io.FileWriter;  
import java.util.ArrayList;  
import java.util.Arrays;  
  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.output.Format;  
import org.jdom.output.XMLOutputter;  
  
public class CreateXML {  
    public static void main(String[] args)throws Exception {  
        //创建DOM对象  
        Document doc = new Document();  
        //创建根节点  
        Element rootNode = new Element("users");  
          
        //创建二级节点(id=0001)  
        Element userNode1 = new Element("user");  
        //为二级节点设置属性  
        userNode1.setAttribute("id", "0001");  
          
        //创建三级节点(name)  
        Element nameNode1 = new Element("name");  
        //为三级节点设置文本  
        nameNode1.addContent("张三");  
        //创建三级节点(name)  
        Element sexNode1 = new Element("sex");  
        //为三级节点设置文本  
        sexNode1.addContent("男");  
        //创建三级节点(age)  
        Element ageNode1 = new Element("age");  
        //为三级节点设置文本  
        ageNode1.addContent("20");  
          
          
        //创建二级节点(id=0001)  
        Element userNode2 = new Element("user");  
        //为二级节点设置属性  
        userNode2.setAttribute("id", "0002");  
          
        //创建三级节点(name)  
        Element nameNode2 = new Element("name");  
        //为三级节点设置文本  
        nameNode2.addContent("李四");  
        //创建三级节点(name)  
        Element sexNode2 = new Element("sex");  
        //为三级节点设置文本  
        sexNode2.addContent("女");  
        //创建三级节点(age)  
        Element ageNode2 = new Element("age");  
        //为三级节点设置文本  
        ageNode2.addContent("25");  
          
        //添加单个节点  
        //userNode.addContent(nameNode);  
        //把三级节点添加到二级节点上  
        userNode1.addContent(new ArrayList<Element>(Arrays.asList(nameNode1,sexNode1,ageNode1)));  
        //把三级节点添加到二级节点上  
        userNode2.addContent(new ArrayList<Element>(Arrays.asList(nameNode2,sexNode2,ageNode2)));  
          
          
        //把二级节点添加到跟节点上  
        rootNode.addContent(userNode1);  
        rootNode.addContent(userNode2);  
          
        //把跟节点添加到DOM对象上  
        doc.addContent(rootNode);  
        //创建XML输出对象(XMLOutputter)  
        XMLOutputter xop = new XMLOutputter();  
        //为输出的XML定义格式  
        Format format = Format.getPrettyFormat();  
        //编码方式  
        format.setEncoding("GBK");  
        //把格式设置到输出对象中  
        xop.setFormat(format);  
        File file = new File("D:\\dd");  
        if(!file.exists()){  
            file.mkdirs();  
        }  
        //创建输出流  
        FileWriter fw = new FileWriter(file+"\\connection.xml");  
        //把xml输出  
        xop.output(doc, fw);  
        System.out.println(xop.outputString(doc));  
        //关闭输出流  
        fw.close();  
    }  
/*<?xml version="1.0" encoding="GBK"?> 
<users> 
  <user id="0001"> 
    <name>张三</name> 
    <sex>男</sex> 
    <age>20</age> 
  </user> 
  <user id="0002"> 
    <name>李四</name> 
    <sex>女</sex> 
    <age>25</age> 
  </user> 
</users>*/  
}  

2. 插入XML
package jdom.test;  
  
import java.io.File;  
import java.io.FileWriter;  
import java.util.List;  
  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.input.SAXBuilder;  
import org.jdom.output.Format;  
import org.jdom.output.XMLOutputter;  
  
public class InsertXML {  
    @SuppressWarnings("unchecked")  
    public static void main(String[] args)throws Exception {  
        //创建XML解析器  
        SAXBuilder builder = new SAXBuilder(false);  
        //创建DOM对象  
        Document doc = builder.build("D:\\dd\\connection.xml");  
        //获得跟节点  
        Element rootNode = doc.getRootElement();  
        //获得根节点下的所有子节点  
        List<Element> elements = rootNode.getChildren("user");  
        Element zsElement = null;  
        //遍历所有子节点判断要查找的节点是否存在  
        for(Element e : elements){  
            if(e.getAttributeValue("id").equals("0003")){  
                zsElement = e;  
                break;  
            }  
        }  
        if(zsElement!=null){  
              
            Element pwdNode = new Element("pwd");  
            pwdNode.addContent("000000");  
            //追加(插入到末尾)  
            zsElement.addContent(pwdNode);  
            //插入到指定位置  
            zsElement.addContent(0, pwdNode);  
            //创建XML输出对象(XMLOutputter)  
            XMLOutputter xop = new XMLOutputter();  
            //为输出的XML定义格式  
            Format format = Format.getPrettyFormat();  
            //编码方式  
            format.setEncoding("GBK");  
            //把格式设置到输出对象中  
            xop.setFormat(format);  
            File file = new File("D:\\dd");  
            if(!file.exists()){  
                file.mkdirs();  
            }  
            //创建输出流  
            FileWriter fw = new FileWriter(file+"\\connection.xml");  
            //把xml输出  
            xop.output(doc,fw);  
            //关闭输出流  
            fw.close();  
        }  
    }  
}  

3. 修改XML
package jdom.test;  
  
import java.io.File;  
import java.io.FileWriter;  
import java.util.List;  
  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.input.SAXBuilder;  
import org.jdom.output.Format;  
import org.jdom.output.XMLOutputter;  
/** 
 * 修改张三的信息 
 */  
public class UpdateXML {  
    @SuppressWarnings("unchecked")  
    public static void main(String[] args)throws Exception {  
        //创建XML解析器  
        SAXBuilder builder = new SAXBuilder(false);  
        //创建DOM对象  
        Document doc = builder.build("D:\\dd\\connection.xml");  
        //获得跟节点  
        Element rootNode = doc.getRootElement();  
        //获得根节点下的所有子节点  
        List<Element> elements = rootNode.getChildren("user");  
        Element zsElement = null;  
        //遍历所有子节点判断要查找的节点是否存在  
        for(Element e : elements){  
            if(e.getAttributeValue("id").equals("0001")){  
                zsElement = e;  
                break;  
            }  
        }  
        if(zsElement!=null){  
            //修改内容  
            //先移除  
            zsElement.getChild("name").removeContent();  
            //在添加  
            zsElement.getChild("name").addContent("王五");  
            //修改属性  
            zsElement.removeAttribute("id");  
            zsElement.setAttribute("id","0003");  
            //创建XML输出对象(XMLOutputter)  
            XMLOutputter xop = new XMLOutputter();  
            //为输出的XML定义格式  
            Format format = Format.getPrettyFormat();  
            //编码方式  
            format.setEncoding("GBK");  
            //把格式设置到输出对象中  
            xop.setFormat(format);  
            File file = new File("D:\\dd");  
            if(!file.exists()){  
                file.mkdirs();  
            }  
            //创建输出流  
            FileWriter fw = new FileWriter(file+"\\connection.xml");  
            //把xml输出  
            xop.output(doc,fw);  
            //关闭输出流  
            fw.close();  
        }  
        /* 
         <?xml version="1.0" encoding="GBK"?> 
        <users> 
          <user id="0003"> 
            <name>王五</name> 
            <sex>男</sex> 
            <age>20</age> 
          </user> 
          <user id="0002"> 
            <name>李四</name> 
            <sex>女</sex> 
            <age>25</age> 
          </user> 
        </users> 
         */  
    }  
}  

4. 删除XML
package jdom.test;  
  
import java.io.File;  
import java.io.FileWriter;  
import java.util.List;  
  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.input.SAXBuilder;  
import org.jdom.output.Format;  
import org.jdom.output.XMLOutputter;  
  
public class DeleteXML {  
    @SuppressWarnings("unchecked")  
    public static void main(String[] args)throws Exception {  
        //创建XML解析器  
        SAXBuilder builder = new SAXBuilder(false);  
        //创建DOM对象  
        Document doc = builder.build("D:\\dd\\connection.xml");  
        //获得跟节点  
        Element rootNode = doc.getRootElement();  
        //获得根节点下的所有子节点  
        List<Element> elements = rootNode.getChildren("user");  
        Element zsElement = null;  
        //遍历所有子节点判断要查找的节点是否存在  
        for(Element e : elements){  
            if(e.getAttributeValue("id").equals("0001")){  
                zsElement = e;  
                break;  
            }  
        }  
        if(zsElement!=null){  
            //删除某个节点下节点名是name的第一个子节点  
            zsElement.removeChild("name");  
            //删除某个节点下节点名是name的所有子节点  
            //zsElement.removeChildren("name");  
            //删除属性名称是id的属性  
            //zsElement.removeAttribute("id");  
            //删除该节点下的所有内容  
            //zsElement.removeContent();  
              
            //创建XML输出对象(XMLOutputter)  
            XMLOutputter xop = new XMLOutputter();  
            //为输出的XML定义格式  
            Format format = Format.getPrettyFormat();  
            //编码方式  
            format.setEncoding("GBK");  
            //把格式设置到输出对象中  
            xop.setFormat(format);  
            File file = new File("D:\\dd");  
            if(!file.exists()){  
                file.mkdirs();  
            }  
            //创建输出流  
            FileWriter fw = new FileWriter(file+"\\connection.xml");  
            //把xml输出  
            xop.output(doc,fw);  
            //关闭输出流  
            fw.close();  
        }  
    }  
}  

5. 查询XML
package jdom.test;  
  
import java.util.List;  
  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.input.SAXBuilder;  
  
public class SelectXML {  
    @SuppressWarnings("unchecked")  
    public static void main(String[] args)throws Exception {  
        //创建XML解析器  
        SAXBuilder builder = new SAXBuilder(false);  
        //创建DOM对象  
        Document doc = builder.build("D:\\dd\\connection.xml");  
        //获得跟节点  
        Element rootNode = doc.getRootElement();  
        //获得根节点下的所有子节点  
        List<Element> elements = rootNode.getChildren("user");  
        Element zsElement = null;  
        //遍历所有子节点判断要查找的节点是否存在  
        for(Element e : elements){  
            if(e.getAttributeValue("id").equals("0003")){  
                zsElement = e;  
                break;  
            }  
        }  
        if(zsElement!=null){  
            //获得属性  
            String id = zsElement.getAttributeValue("id");  
            //获得子节点的值  
            String name = zsElement.getChildText("name");  
            System.out.println(id);  
            System.out.println(name);  
        }  
    }  
}  


XMLOutputter XMLOut = new XMLOutputter("    ",  true);  

把这句代码直接在构造函数里贴上可以解决JDOM生成XML的换行问题。

参考:
http://zyw090111.iteye.com/blog/706850
http://xi5566.iteye.com/blog/215501
分享到:
评论

相关推荐

    使用JDOM解析XML文件

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

    java 使用JDOM解析xml文件.docx

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

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

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

    用jdom解析xml

    在这个教程中,我们将深入探讨如何在JSP(JavaServer Pages)环境中使用JDOM解析XML。 **1. JDOM基本概念** JDOM的核心在于两个主要类:`Element`和`Document`。`Element`代表XML文档中的一个节点,而`Document`则...

    用jdom解析xml文件

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

    java利用jdom解析xml文件

    以上就是使用JDOM解析XML文件的基本流程和关键知识点。通过JDOM,你可以轻松地处理XML文档,无论是读取还是修改,都变得轻而易举。在实际开发中,掌握XML和JDOM的操作对于处理结构化数据和接口通信至关重要。

    jdom解析xml文件小实例

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

    Jdom解析XML

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

    JDOM解析XML

    要使用JDOM解析XML,首先需要将JDOM的jar文件(如jdom.jar)添加到项目的类路径中。此外,由于XML解析通常涉及到其他库,如XPath解析和DTD处理,我们看到压缩包中还包含了一些其他相关的jar文件: 1. xalan.jar:...

    java jdom解析xml

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

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

    下面通过一个具体的例子来展示如何使用JDOM解析XML文件。 假设我们有如下的XML文件(`example.xml`): ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; 张三 &lt;age&gt;30 李四 &lt;age&gt;25 ``` #### 1. ...

    基于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的步骤 1. **导入依赖**: 在Java项目中,你需要引入JDOM的库。如果是Maven项目,可以在pom.xml中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;jdom2 &lt;version&gt;2.0.6 ``` 2. ...

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

    以上是关于使用JDOM解析XML的基本方法及优化策略的详细介绍。通过灵活运用这些技巧,我们可以创建出高效且可复用的XML处理代码。在实际开发中,还可以结合其他工具如XPath和XSLT,进一步增强对XML文档的操作能力。

    jdom解析xml文件

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

    jdom 读取XML 文件

    使用JDOM,我们可以通过API操作这些节点来实现对XML的解析和操作。 要读取XML文件,首先需要在项目中引入JDOM库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom ...

    JDOM解析XML文档

    #### 三、使用JDOM解析XML 为了更好地理解如何使用JDOM进行XML解析,我们可以通过一个简单的例子来展示这一过程: 1. **创建SAXBuilder实例:** 使用`new SAXBuilder()`创建一个新的`SAXBuilder`对象。 2. **加载...

Global site tag (gtag.js) - Google Analytics