XML —— Java 操作 XML 工具包( JDOM&DOM4J )

Posted cocoomg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML —— Java 操作 XML 工具包( JDOM&DOM4J )相关的知识,希望对你有一定的参考价值。

1. JDOM 引入

  • JDOM 是一种使用 XML(标准通用标记语言下的一个子集) 的独特 Java 工具包,用于快速开发 XML 应用 程序。
  • 集合DOM 和 SAX 的优点
  • 需要引入jar包
  • JDOM 官方网站:http://www.jdom.org/
  • 小缺陷:生成文档不会格式化,需要手动格式化 ( ctrl+shift+F)
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.jdom2.Attribute;
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.output.XMLOutputter;
    
    public class JDOM01 {
    
        public static void main(String[] args) {
            Element student=new Element("student"); 
            
            Attribute id=new Attribute("id", "001"); // 属性节点
            Attribute aa=new Attribute("aa", "xx");
            student.setAttribute(id); 
            student.setAttribute(aa);
            
            Element name=new Element("name"); //元素节点名
            name.setText("张三"); // 设置文本节点
            student.addContent(name); 
            
            
            Document document=new Document(student);
            XMLOutputter out=new XMLOutputter();
            out.setFormat(out.getFormat().setEncoding("UTF-8"));
            
            try {
                out.output(document, new FileOutputStream("src/student2.xml"));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    import java.util.List;
    
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.input.SAXBuilder;
    
    public class JDOM02 {
    
        public static void main(String[] args) throws Exception{
            SAXBuilder builder=new SAXBuilder(); // SAXBuilder
            Document document=builder.build("src/students.xml");
            Element students=document.getRootElement();
            List studentList=students.getChildren("student");
            for(int i=0;i<studentList.size();i++){
                Element student=(Element)studentList.get(i);
                String id=student.getAttributeValue("id");
                String name=student.getChildText("name");
                String sex=student.getChildText("sex");
                String age=student.getChildText("age");
                System.out.println("学号:"+id+";姓名:"+name+";性别:"+sex+";年龄:"+age);
            }
        }
    }

     

 

2. DOM4J 引入

  • dom4j 是一个 Java 的 XML API,类似于 jdom,用来读写 XML 文件的。
  • dom4j 是一个非常非常优秀的 JavaXML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在 SourceForge 上找到它。
  • 在 IBM developerWorks 上面可以找到一篇文章,对主流的 Java XML API 进行的性能、功能和易用性 的评测,dom4j 无论在哪个方面都是非常出色的。
  • 如今可以看到越来越多的 Java 软件都在使用 dom4j 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 dom4j。
  • jar 包, Hibernate 用它来读写配置文件。
  • DOM4J 官方网站:http://www.dom4j.org/
  • 生成的XML文件是已格式化的
  • import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    
    public class DOM4J01 {
    
        public static void main(String[] args) {
            Document document=DocumentHelper.createDocument();     //获取文档
            Element studentElement=document.addElement("student"); //通过文档直接添加元素
            studentElement.addAttribute("id", "001");              //添加属性
            studentElement.addAttribute("aa", "xx");
            
            Element name=studentElement.addElement("name");        //添加元素
            name.setText("张三");                                    //设置元素值
            Element sex=studentElement.addElement("sex");
            sex.setText("男");
            Element age=studentElement.addElement("age");
            age.setText("20");
            
            OutputFormat format=OutputFormat.createPrettyPrint();  
            format.setEncoding("UTF-8");  
            try {
                XMLWriter writer=new XMLWriter(new FileOutputStream("src/student3.xml"),format); // 输出
                writer.write(document);
                writer.close();
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    import java.util.Iterator;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    
    public class DOM4J02 {
    
        public static void main(String[] args) throws Exception{
            SAXReader saxReader=new SAXReader(); //SAXReader
            Document document=saxReader.read("src/students.xml");
            Element rootElement=document.getRootElement();
            Iterator iter=rootElement.elementIterator();
            while(iter.hasNext()){
                Element studentElement=(Element)iter.next();
                System.out.println("学号:"+studentElement.attributeValue("id"));
                System.out.println("姓名:"+studentElement.elementText("name"));
                System.out.println("性别:"+studentElement.elementText("sex"));
                System.out.println("年龄:"+studentElement.elementText("age"));
                System.out.println("=========");
            }
        }
    }

     

以上是关于XML —— Java 操作 XML 工具包( JDOM&DOM4J )的主要内容,如果未能解决你的问题,请参考以下文章

Java操作XML的工具:JAXB

通过java程序读mysql数据库生成xml文档

java基础71 XML解析相关知识点(网页知识)

Java操作XML牛逼利器JDOM&DOM4J

Dom4j工具j解析XML原理和示例代码

analysed of J-SON/XML processing model Extend to java design model (J-SON/XML处理模型分析 扩展到Java设计模