基于dom4j的xml创建与解析

java对xml文件的操作有多种方法,其中dom4j是非常优秀的一种常用方法,首先需要引入dom4j的包,这里引入dom4j-2.0.1.jar。
1.dom4j的xml创建
jsp代码:

<%@page import="org.dom4j.io.OutputFormat"%>
<%@page import="org.dom4j.io.XMLWriter"%>
<%@page import="java.io.FileWriter"%>
<%@page import="org.dom4j.Element"%>
<%@page import="org.dom4j.Document"%>
<%@page import="org.dom4j.DocumentHelper"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
    <title>XML创建</title>
</head>
<body>
    <%
        // 创建文档并设置文档的根节点  
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement("root");
        //在根节点下添加节点并设置名称、值、属性名称、属性值
        Element author1 = root.addElement("author").addAttribute("name", "James").addAttribute("location", "UK").addText("James Strachan");
        Element author2 = root.addElement("author").addAttribute("name", "Bob").addAttribute("location", "US").addText("Bob McWhirter");
        //创建文件输出流
        FileWriter fw = new FileWriter("F://foo.xml");
        //document.write(fw);
        //创建格式s
        //OutputFormat format = OutputFormat.createCompactFormat();
        OutputFormat format = OutputFormat.createPrettyPrint();
        //创建XMLWriter对象
        XMLWriter writer = new XMLWriter(fw,format);
        //向文件写入数据
        writer.write(document);
        writer.close();
    %>  
</body>
</html>

运行该jsp页面就可以看到F:foo.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <author name="James" location="UK">James Strachan</author>
    <author name="Bob" location="US">Bob McWhirter</author>
</root>

2.dom4j的xml解析
直接解析上例中创建的xml文件,jsp代码:

<%@page import="org.dom4j.Attribute"%>
<%@page import="java.util.List"%>
<%@page import="java.util.Iterator"%>
<%@page import="org.dom4j.Element"%>
<%@page import="java.io.File"%>
<%@page import="org.dom4j.Document"%>
<%@page import="org.dom4j.io.SAXReader"%>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
    <title>XML解析</title>
</head>
<body>
    <%
        //1.获取SAM接口: 
        SAXReader saxReader = new SAXReader();
        //2.获取XML文件:
        Document document = saxReader.read(new File("F://foo.xml"));
        //3.获取根节点: 
        Element root = document.getRootElement();
        System.out.println("根节点: " + root.getName());    
        System.out.println("----------------"); 
        //获取子节点  
        Iterator<Element> it= root.elementIterator();
        while(it.hasNext()){
            Element element = it.next();
            //打印子节点的名称和值
            System.out.println(element.getName()+"----------------"+element.getStringValue());
            //获取属性名属性值
            List<Attribute> li= element.attributes();
            for(Attribute att : li){
                //打印子节点的属性名称和属性值
                System.out.println(att.getName()+"-------"+att.getValue());
            }
            //获取子节的子节点
            Iterator<Element> ite = element.elementIterator();
            while(ite.hasNext()){
                Element child = ite.next();  
                System.out.println(child.getName()+"-------"+child.getStringValue());
            }
            System.out.println("----------------"); 
        }
    %>  
</body>
</html>

运行该jsp页面,控制台输出如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/m0_37459945/article/details/77938325