XML解析

    xiaoxiao2025-08-09  6

    XML解析

    Java中配置文件的三种配置位置及读取方式

    1、 XML和*.properties(属性文件) 2、 存放位置 2、1 存放在src根目录下

    Xxx.class.getResourceAsStream("/config.properties");

    2.2 与读取配置文件的类在同一包

    Xxx.class.getResourceAsStream("config2.properties");

    2.3 WEB-INF(或其子目录下)

    ServletContext application = this.getServletContext(); InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties");

    第一种方法:在同包的情况下获取

    第二种方法:在不同包的情况下获取,放根目录下,在db.properties前加==/==; 第三种方式:读取WEB-INF, 需要配置servlet

    运行的结果: 注意*.properties文件 key=value #注释 Properties.load(is)

    bin 放命令的 config 放tomcat服务配置的 work 临时文件 webapp 发布项目的目录 web-inf 安全目录 含义:不能被外界访问 log 日志

    2、 XML的作用

    properties文件的解析方式由java.util.properties这个类来完成 xml文件:应该有一个工具类来完成 以下是三种不同解析的工具类 ① jdk/jdom dom节点 ② sax解析 由上往下解析 ③ dom4j解析 由外到内解析

    题型:从众多学生中找到小王

    package com.zking_xml.parse; import java.io.InputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class XmlPerseDemo { public static void main(String[] args) throws DocumentException { InputStream in = XmlPerseDemo.class.getResourceAsStream("students.xml"); SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(in); // System.out.println(doc.asXML()); //1.获取到所有的学生 // List<Element> stuEles = doc.selectNodes("/students/student"); // //2.遍历 // for (Element stuEle : stuEles) { // if("s003".equals(stuEle.attributeValue("sid"))) { // Element nameEle = (Element)stuEle.selectSingleNode("name"); System.out.println(nameEle.asXML()); // System.out.println(nameEle.getText()); // } // } //3.做判断、如果sid=s003那么拿到小王 Element stuEleS003 = (Element)doc.selectSingleNode("students/student[@sid='s003']"); System.out.println(stuEleS003.selectSingleNode("name").getText()); } }

    接下来将要写servlet

    package com.xml.parse; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class PropertiesServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = req.getServletContext(); InputStream in = context.getResourceAsStream("/WEB-INF/db.properties"); Properties p = new Properties(); p.load(in); System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); } }

    最后配置web.xml

    <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" id="WebApp_ID" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <display-name>liyi_xml</display-name> <servlet> <servlet-name>propertiesServlet</servlet-name> <servlet-class>com.xml.parse.PropertiesServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>propertiesServlet</servlet-name> <url-pattern>/propertiesServlet</url-pattern> </servlet-mapping> </web-app>

    注意:dom4j+xpath解析xml文件xpath等同数据库的select语句 document.selectNodes(xpath);//查一组 document.selectSingleNode(xpath);//查单个

    DOM由节点组成: ① 元素节点 ② 属性节点 ③ 文本节点

    最新回复(0)