`
huxiuliang
  • 浏览: 118935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DOM4J小结

    博客分类:
  • Java
阅读更多

import java.io.StringWriter;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class CreateXml {

    public static String Create() {

        // 用工厂类创建一个document实例
        Document doc = DocumentHelper.createDocument();
        // 创建根元素emps
        Element rootEle = doc.addElement("students");
        // 添加注释
        rootEle.addComment("这是一个dom4j生成的xml文件");
        // emps根节点下创建一个emp节点
        for (int i = 0; i < 10; i++) {
            Element empEle = rootEle.addElement("student");
            // emp添加属性id="1"
            String id = (i + 1) % 2 == 0 ? Integer.toString(i + 1) : "";
            empEle.addAttribute("id", id);
            // emp节点下创建一个name节点
            Element nameEle = empEle.addElement("name");
            // name节点下创建一个文本节点
            nameEle.setText("胡秀亮" + i);
            String age = (i + 1) % 3 == 0 ? Integer.toString(i + 1) : "";
            nameEle.addAttribute("age", age);
           
            Element sexEle = empEle.addElement("sex");
            sexEle.setText(i % 2 == 0 ? "男" : "女");
         
        }
        return doc.asXML();
        // return XmlToString(doc,true);

 

           /**将document中的内容写入文件中
         try {
            Writer out = new FileWriter("D:/MyTool/Work_Output/emps.xml");
            // 格式化输出,类型IE浏览一样
            OutputFormat format = OutputFormat.createPrettyPrint();
            // OutputFormat format = OutputFormat.createCompactFormat();
            format.setEncoding("UTF-8");
            // 创建写出对象
            XMLWriter writer = new XMLWriter(out, format);
            writer.write(doc);
            writer.close();
            System.out.println("生成emps.xml成功。");
             } catch (IOException e) {
                  // TODO Auto-generated catch block
                 e.printStackTrace();
                  System.out.println("失败了。");
            }

          **/

 


    }

    /**
     * 如果发生中文乱码用此类转换
     *
     * @param Doc
     * @param PrettyPrint
     * @return
     */

    public static String XmlToString(Document Doc, boolean PrettyPrint) {
        String s = "";
        StringWriter sw = null;
        try {
            OutputFormat fmt = null;
            if (PrettyPrint) {
                fmt = new OutputFormat("    ", true, "GBK");
                fmt.setLineSeparator("\r\n");
            } else {
                fmt = OutputFormat.createCompactFormat();
                fmt.setEncoding("GBK");
            }
            fmt.setNewLineAfterDeclaration(false);
            fmt.setExpandEmptyElements(true);
            sw = new StringWriter();
            XMLWriter xw = new XMLWriter(sw, fmt);
            xw.write(Doc);
            sw.close();
            s = sw.toString();
        } catch (Exception ex) {
            s = "";
            ex.printStackTrace();
        } finally {
            try {
                sw.close();
            } catch (Exception ex1) {
            }
        }
        return s;
    }
}

 

 

///////////////////////////////////////

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 利用dom4j进行XML编程
 *
 *
 */

public class Dom4jReadExmple {

    public static List iterateWholeXML(String url) {
        List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();

        SAXReader saxReader = new SAXReader();
        try {
            Document document = saxReader.read(url);
            Element root = document.getRootElement();
          

            // 遍历根结点(students)的所有孩子节点(肯定是student节点)
            for (Iterator iter = root.elementIterator(); iter.hasNext();) {
                Element element = (Element) iter.next();

                HashMap<String, String> hm = new HashMap<String, String>();

                // 获取person节点的age属性的值
                Attribute ageAttr = element.attribute("id");
                if (ageAttr != null) {
                    String age = ageAttr.getValue();
                    if (age != null && !age.equals("")) {
                        hm.put(element.getName() + "_" + ageAttr.getName(), age);
                    } else {
                        hm.put(element.getName() + "_" + ageAttr.getName(), "20");
                    }
                } else {
                    hm.put(element.getName() + "_id", "20");
                }
                // 遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理
                for (Iterator iterInner = element.elementIterator(); iterInner.hasNext();) {
                    Element elementInner = (Element) iterInner.next();
                    if (elementInner.getName().equals("name")) {
                        hm.put(elementInner.getName(), elementInner.getText());
                        // 获取college节点的leader属性的值
                        Attribute leaderAttr = elementInner.attribute("age");
                        if (leaderAttr != null) {
                            String leader = leaderAttr.getValue();
                            if (leader != null && !leader.equals("")) {
                                hm.put(elementInner.getName() + "_" + leaderAttr.getName(), leader);
                            } else {
                                hm.put(elementInner.getName() + "_" + leaderAttr.getName(), "age");
                            }
                        } else {
                            hm.put(elementInner.getName() + "_age", "age");
                        }
                    } else {
                        hm.put(elementInner.getName(), elementInner.getText());
                    }
                }

                list.add(hm);
            }
        } catch (DocumentException e) {
            // TODO Auto_generated catch block
            e.printStackTrace();
        }
        return list;
        // return null;
    }

}

///////////////////servlet

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ViewXml extends HttpServlet {

    /**
     * Constructor of the object.
     */

    public ViewXml() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */

    public void destroy() {
        super.destroy(); //
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to get.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/xml");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();

        out.print(CreateXml.Create());

        out.flush();
        out.close();
    }

    /**
     * The doPost method of the servlet. <br>
     *
     * This method is called when a form has its tag value method equals to
     * post.
     *
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the POST method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException
     *             if an error occure
     */

    public void init() throws ServletException {
        // Put your code here
    }

}

 

////////////////////////

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * 测试Dom4jReadExmple解析的情况
 *
 *
 */

public class TestDom4jReadExmple {
    public static void main(String[] args) {
        try {
            // 获取解析完后的解析信息
            List list = new ArrayList();

            // 遍历整个XML文件

            list = Dom4jReadExmple.iterateWholeXML("http://localhost:8080/XML/ViewXml");
            System.out.println(list.size());
            System.out.println("姓名\t学号\t年龄\t性别");
            if (list!=null&&list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    HashMap map = (HashMap) list.get(i);
                    System.out.print(map.get("name") + "\t");
                    System.out.print(map.get("student_id") + "\t");
                    System.out.print(map.get("name_age") + "\t");
                    System.out.println(map.get("sex") + "\t");

                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
/**
     * 注意: dom4j1.6
     * 解压后有一个dom4j-1.6.1.jar文件,这就是应用时需要引入的类包,另外还有一个jaxen-1.1-beta-6.jarr文件,一般也需要引入,否则执行时可能抛java.lang.NoClassDefFoundError:
     * org/jaxen/JaxenException异常,其他的包可以选择用之。
     *
     *
     */

分享到:
评论

相关推荐

    dom4j-1.6.1及相关使用示例

    ### 小结 DOM4J作为Java处理XML的强大工具,通过简洁的API实现了对XML的全面操作。了解并熟练掌握DOM4J,对于提升XML处理能力大有裨益。同时,`dom4j-1.6.1.jar`库文件则是实际开发中使用DOM4J的依赖包,包含了所有...

    Dom4j对xml的解析小结

    在这个小结中,我们将深入探讨 Dom4j 的核心功能,包括初始化、使用迭代器、XPath 导航以及快速遍历。 1. 初始化: 在 Dom4j 中,解析 XML 文档的第一步是创建一个 `SAXReader` 实例,然后用它来读取 XML 文件。...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和...

    JAVA WEB典型模块与项目实战大全

    第20章 数据格式转换(struts 2.x+hibernate+dom4j)  20.1 关于xml文件基础知识  20.2 下载dom4j  20.3 数据格式转换功能前期准备  20.4 数据格式转换功能具体开发  20.5 多学两招——其他操作xml文件...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.5.1 下载并配置dom4j 88 3.5.2 dom4j api介绍 88 3.5.3 第一个实例 92 3.5.4 第二个实例 94 3.6 解析名称空间 96 3.6.1 dom和名称空间 96 3.6.2 sax和名称空间 97 3.6.3 jdom和名称空间 98 3.6.4 dom4j和...

    JAVA社区交流平台网站

    2.2.2 Dom4j 6 2.2.3 SOAP 6 2.2.4 WebService 7 2.2.5 WSDL 7 2.2.6 Velocity 8 2.2.7 Swing 8 2.2.8 Java反射 9 2.3 本章小结 9 第三章 服务开发平台的总体框架 10 3.1 前台可视化IDE的设计 11 3.2 后台的总体设计...

    如何使用XPath提取xml文档数据

    小结 XPath是一种强大的查询语言,广泛应用于XML文档数据的提取和处理。它提供了灵活的查询方式,能够快速、高效地从XML文档中提取所需的数据。在本文中,我们详细介绍了XPath的基础知识和应用场景,并提供了Java...

    微信公众平台应用开发:方法、技巧与案例.(机械工业.柳峰)

     4.3.1 Dom4j的使用 79  4.3.2 XStream的使用 80  4.3.3 解析请求消息 83  4.3.4 响应消息对象转XML 85  4.4 案例:消息的接收与响应 88  4.4.1 开发准备工作 88  4.4.2 消息封装类 88  4.4.3 封装...

    hibernate annotation学习文档

    #### 五、小结 通过上述示例,我们了解了如何使用 Hibernate 注解来快速实现 Java 对象与数据库表之间的映射。这些注解大大简化了实体类的定义,同时也提供了足够的灵活性来处理复杂的业务需求。对于初学者而言,...

    JavaScript 日期时间选择器一些小结

    4. **API 和事件系统**: 提供了丰富的 API 接口和事件系统,使得开发者可以轻松地与选择器进行交互,实现自定义功能。 5. **模块化支持**: 支持使用现代构建工具如 webpack 进行模块化引入,同时也支持作为 jQuery ...

    javascript设置文本框光标的方法实例小结

    此外,了解如何操作文本框和文本区域的光标也是掌握JavaScript DOM操作的基础,这对于前端开发者来说至关重要。JavaScript提供了丰富的API来处理DOM元素,包括文本框和文本区域,允许我们实现各种复杂的用户界面效果...

    (超赞)JAVA精华之--深入JAVA API

    - 使用 Dom4j 解析和生成 XML 文档。 **3.3 Java 语言的 XML 验证 API** - **XML验证** - 使用 Java API 验证 XML 文档的正确性。 **3.4 Hibernate的hello word** - **ORM框架** - 使用 Hibernate 进行对象...

Global site tag (gtag.js) - Google Analytics