读取XML文件


dom4j读取xml文件

今天晚上搞来搞去读取xml,方法有不少,但最好用且没问题的还是dom4j,本来有一个dom,但那个是在java集合出来之前好像就有了,版本实在太老,甚至会把空白字符、回车字符当作一个节点(node)。
还有一种是SAX解析xml,还没有尝试过,以后有缘再见。
参考资料:
读取配置文件/xml的各种方法:
http://c.biancheng.net/view/1631.html
https://www.jb51.net/article/136564.htm

dom4j解析xml:

https://www.iteye.com/blog/miaoxianjie-1914030
https://www.jianshu.com/p/ce65c1619da5 (dom4j的详细用法)

自己写的行之有效的代码:

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

    
        woshi
        123123
    

package com.woshi.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;


@WebServlet("/xml")
public class XmlServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        SAXReader reader = new SAXReader();
        Document doc = null;
        String xmlPath = "db.xml";

        ClassLoader classLoader = XmlServletTest.class.getClassLoader();
        InputStream inputStream = classLoader.getResourceAsStream(xmlPath);

        try{
            doc = reader.read(inputStream);
            Element db = doc.getRootElement();
            Element connection = db.element("connection");
            List details = connection.elements();
            Iterator iterator = details.iterator();
            while (iterator.hasNext()) {
                Element detail = (Element) iterator.next();
                System.out.println(detail.getName()+":"+detail.getText());
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}