XML解析

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值