`
qinjingkai
  • 浏览: 260328 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Jdom解析xml文件

阅读更多

    用原生的dom来解析xml(就是传统的DocumentBuilderFactory---->DocumentBuilder--->Document的方式)确实比较费力;好在现在有很多第三方的解析工具了,在这方面jdom就相当优秀,我个人也比较喜欢用;其实说到xml文件,在开发中对其的操作无非就是增删改查了,其中最常用的就是查了,不过为了全面,在这里把所有的总结了;

 

代码和所用的jar放在附件中,jdom.xml文件的路径是 工程名字\src\jdom.xml

 

 

package jdom;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.XMLOutputter;

public class JdomParse {
    private static String fileName="jdom.xml";
    private static SAXBuilder saxBuilder;
    private static Document document;
    private static final String classpath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
    //private static final String classpath=JdomParse.class.getClassLoader().getResource("").getPath();
    private static String filePath;
    private static File  workFile;
   
    static{
       
        saxBuilder=new SAXBuilder();
         try {
             filePath=classpath+fileName;
             
             workFile=new File(filePath);
       
            document=saxBuilder.build(new File(filePath));
             
        } catch (JDOMException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
       
       
    }
   
   
    /**遍历xml文件中的元素*/
    public void parse(){

       
        Element root=document.getRootElement();
        System.out.println("root---"+root.getName());
       
        Element title=root.getChild("title");    //根据元素名字获得元素
        System.out.println("title----"+title.getText());
       
        Element contents=root.getChild("contents");
       
        List chapterList=contents.getChildren("chapter");
  //根据和元素名对应的孩子序列
        System.out.println("list--size---"+chapterList.size());
       
       
        for (int i = 0; i < chapterList.size(); i++) {
            Element chapter=(Element) chapterList.get(i);
            List topicList=chapter.getChildren("topic");
            for (int j = 0; j < topicList.size(); j++) {
                Element topic=(Element) topicList.get(j);
                String name=topic.getChild("name").getText();
                String address=topic.getChildText("address");
                System.out.println("name---"+name);
                System.out.println("address---"+address);
                String email=topic.getChildText("email");
                if(email!=null&&!email.equalsIgnoreCase("")){
                    System.out.println("emai---"+email);
                }
               
            }
           
           
        }
       
       
       
       
       
       
   
       
       
    }
   
   
   
    /**向xml文件中增加一个元素*/
    public void insert(){
        Element root=document.getRootElement();
        Element appendix=new Element("appendix");
        appendix.setAttribute("id", "101");
        appendix.setText("after Title");
        Element author=new Element("author");
        author.setText("qinjk");
        appendix.addContent(author);
        root.addContent(appendix);
       
      
        try {
             XMLOutputter xmlOutputter=new XMLOutputter();
            OutputStream os=new FileOutputStream(workFile);
            xmlOutputter.output(document, os);
            os.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
       
    }
   
   
    /**从xml文件中删除一个元素*/
    public void remove(){
        Element root=document.getRootElement();
        List appendixList=root.getChildren("appendix");
        for (int i = 0; i <appendixList.size(); i++) {
            Element appendix=(Element) appendixList.get(i);
            if(appendix.getAttributeValue("id").equalsIgnoreCase("101")){
               
                try {
                    root.removeContent(appendix);
                    XMLOutputter xmlOutputter=new XMLOutputter();
                    OutputStream os=new FileOutputStream(workFile);
                    xmlOutputter.output(document, os);
                    os.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
               
            }
           
        }
    }
   
   
   
    /**更新xml文件中某一元素的值*/
    public void modify(){

        Element root=document.getRootElement();
        List appendixList=root.getChildren("appendix");
        for (int i = 0; i <appendixList.size(); i++) {
            Element appendix=(Element) appendixList.get(i);
            if(appendix.getAttributeValue("id").equalsIgnoreCase("101")){
               
                try {
                    appendix.setAttribute("id","22222");
                    XMLOutputter xmlOutputter=new XMLOutputter();
                   
                    OutputStream os = new FileOutputStream(workFile);
                    xmlOutputter.output(document, os);

                    os.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
               
            }
           
        }
   
       
    }
   
    public static void main(String[] args) {
       
        new JdomParse().parse();
   
    }

}

分享到:
评论

相关推荐

    使用JDOM解析XML文件

    NULL 博文链接:https://xurichusheng.iteye.com/blog/1518547

    jdom解析xml文件

    jdom解析xml文件的源代码、jar包以及示例xml文件

    jdom解析xml文件小实例

    jdom解析xml文件小实例jdom解析xml文件小实例jdom解析xml文件小实例

    利用JDOM解析xml文件

    利用JDOM解析xml文件,并根据xml中为类名,生成相应的对象。

    用jdom解析xml文件

    一个关于用jdom解析xml,遍历xml,建立xml的简单例子.

    java 使用JDOM解析xml文件.docx

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

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

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

    Dom JDom 解析xml 文件

    Dom JDom 解析xml 文件 Dom JDom 解析xml 文件 Dom JDom 解析xml 文件 自己使用 最好不要下载

    JDOM解析XML文档

    一份详细介绍了JDOM的基本结构和类。以及用JDOM解析XML文件时常用的方法。并举例进行说明。对于学习JDOM有很大的帮助。虽然是英文版,但是简单易通。初学者可以参考。

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

    使用JDM技术解析XML文档,在了解此程序前请到JDOM官网下载一个JDOM的类包,然后配置环境变量或者将类包连接到eclipse路径中,此程序完全可以运行,在压缩包中还包括原xml文档!!!请参考!

    java利用jdom解析xml文件

    xml样例 博文链接:https://jingrenlang.iteye.com/blog/356160

    jdom 解析 XML文件 java程序 存入Oracle数据库

    对于含有子节点的复杂的XML文件,可以采用jdom.jar来解析。 上传的文件包括程序,XML文件,jdom包,jdbc包 对于复杂的XML文件,可以采用层层解析,虽然方法不是很简便,但是,可以完成解析的任务,而且,准确率很高...

    jdom 读取XML 文件

    NULL 博文链接:https://zhaohong.iteye.com/blog/426761

    jdom解析xml、dtd约束xml文件

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

    Jdom解析xml案例

    Java中使用jdom解析xml的案例, 以及文档说明。

    jdom解析xml实例

    使用jdom解析xml的实例 包括生成新的xml文件,读取xml和修改xml 项目是myeclipse创建的

    解析XML的JDOM的jar包

    解析XML的JDOM的jar包,只有引入这个包就可以解析xml了

    java利用jdom读取xml文件

    利用jdom读取xml 虽然是我自己写的 但是觉得有必要与大家分享一下

    用jdom解析xml源代码资料

    用jdom解析xml源代码资料

Global site tag (gtag.js) - Google Analytics