滴水穿石--使用JDom解析XML文件

JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。

JDOM包含有以下几个组件:

org.jdom包含了所有的xml文档要素的java类
  org.jdom.adapters包含了与dom适配的java类
  org.jdom.filter包含了xml文档的过滤器类
  org.jdom.input包含了读取xml文档的类
  org.jdom.output包含了写入xml文档的类
  org.jdom.transform包含了将jdomxml文档接口转换为其他xml文档接口
  org.jdom.xpath包含了对xml文档xpath操作的类

测试类:JDomParse.java

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.Iterator;

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 { 

    /**  * 打印xmlpath的内容  * @param xmlpath  */ 

    public void printXmlContent(String xmlpath){  

        //用JDOM首先要指定使用什么解析器  

        SAXBuilder builder = new SAXBuilder(false);  

        try {   

            //得到Document,我们以后要进行的所有操作都是对这个Document操作的   

            Document doc = builder.build(xmlpath);   

            //得到根元素:   

            Element books = doc.getRootElement();   

            //得到元素(节点)的集合   

            List booklist = books.getChildren("book");   

            //遍历   

            for (Iterator iter = booklist.iterator(); iter.hasNext();) 

            {    

                Element book = (Element) iter.next();    

                String email = book.getAttributeValue("email");    

                System.out.println(email);    

                String name = book.getChildTextTrim("name");    

                System.out.println(name);    

                //book.getChild("name").setText("bbbb");

                //修改name节点的值   

                String price = book.getChildTextTrim("price");    

                System.out.println(price);   

            }   

            //保存Document的修改到XML文件中

            //   XMLOutputter outputter = new XMLOutputter();

            //   outputter.output(doc, new FileOutputStream(xmlpath));  

        } catch (FileNotFoundException e) {   

            e.printStackTrace();  

        } catch (JDOMException e) {   

            e.printStackTrace();  

        } catch (IOException e) {   

            e.printStackTrace();  

        } 

    } 

    

    /**  

     * 打印xmlpath的结构  

     * @param xmlpath  

     * */ 

    public void printArch(String xmlpath){  

        //用JDOM首先要指定使用什么解析器  

        SAXBuilder builder = new SAXBuilder(false);  

        //得到Document,我们以后要进行的所有操作都是对这个Document操作的  

        try{   

            Document doc = builder.build(xmlpath);   

            //得到根元素:   

            Element root = doc.getRootElement();   

            System.out.println("<"+root.getName()+">");   

            //System.out.println(root.getChildren().size());   

            List children = root.getChildren();   

            Iterator it = children.iterator();   

            while(it.hasNext()){    

                Element e = (Element)it.next();    

                System.out.println("\t<"+e.getName()+">");    

                //找e的子节点    

                Iterator it_e = e.getChildren().iterator();    

                while(it_e.hasNext()){     

                    Element e_c = (Element)it_e.next();     

                    System.out.println("\t\t<"+e_c.getName()+">");    

                    System.out.println("\t\t</"+e_c.getName()+">");    

                }        

                System.out.println("\t</"+e.getName()+">");   

            }   

            System.out.println("</"+root.getName()+">");  

        }catch(Exception e){   

            e.printStackTrace();  

        }   

    } 

    //main方法测试 

    public static void main(String[] args) 

    {  

        JDomParse parser = new JDomParse();  

        //测试printXmlContent()方法 

        String xmlpath = "D:/test.xml";  

        parser.printXmlContent(xmlpath);    

        //测试printArch()  

        String xmlpath1 = "D:/test.xml";  

        parser.printArch(xmlpath1); 

        }

    }

}

所用XML文件test.xml

<?xml version="1.0" encoding="UTF-8"?>

<books>  

    <book email="[email protected]">    

        <name>计算机应用</name>    

        <price>60.0</price>  

    </book>  

    <book email="[email protected]">    

        <name>网络技术</name>    

        <price>30.0</price>  

    </book>  

</books>

运行结果显示:

滴水穿石--使用JDom解析XML文件

 

你可能感兴趣的:(dom解析xml)