XMl解析

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

1.src根目录下:Xxx.class.getResourceAsStream("/config.properties");

/**
 * 各个位置下的资源文件(properties、xml结尾的文件)的读取方式
 * 1.同包下的资源文件读取
 * 2.将所有的资源文件放在根目录下
 * 	编译后所有的资源文件都会自动进WEB-INF下
 * 3.直接将资源文件放到WEB-INF下
 * @yinyi
 *
 */
public class PropertiesDemo {
	public static void main(String[] args) throws IOException {
//将当前类同包下的db.properties资源文件转换成输入流
//      /:代表根目录
		InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties");
		Properties p = new Properties();
		p.load(in);
		System.out.println(p.getProperty("uname"));
		System.out.println(p.getProperty("upass"));
	}
}

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

/**
 * 各个位置下的资源文件(properties、xml结尾的文件)的读取方式
 * 1.同包下的资源文件读取
 * 2.将所有的资源文件放在根目录下
 * 	编译后所有的资源文件都会自动进WEB-INF下
 * 3.直接将资源文件放到WEB-INF下
 * @yinyi
 *
 */
public class PropertiesDemo {
	public static void main(String[] args) throws IOException {
//将当前类同包下的db.properties资源文件转换成输入流
//		/:代表根目录
		InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties");
		Properties p = new Properties();
		p.load(in);
		System.out.println(p.getProperty("uname"));
		System.out.println(p.getProperty("upass"));
	}
}

3.WEB-INF(或其子目录下)
3.1要写个Servlet并且配置;

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"));
	}
}

配置

在这里插入图片描述
在这里插入图片描述

2.XML的用途

1.配置:properties ,xml
2. 数据交换: xml,webservice, json

3.dom4j+xpath解析xml文件

1.xpath相当于数据库的select语句

2.要点
document.selectNodes(xpath);//查一组
document.selectSingleNode(xpath);//查单个

3.DOM由节点组成

4.Node
元素节点
属性节点
文本节点

下面写个案例

public class XmlParseDemo {
	public static void main(String[] args) throws DocumentException {
		InputStream in = XmlParseDemo.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());
	}
}

下面看另一种案例

InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml");
		SAXReader saxReader = new SAXReader();
		Document doc = saxReader.read(in);
		Element stuEleS003 = (Element)doc.selectSingleNode("students/student[@sid='s003']");
		System.out.println(stuEleS003.selectSingleNode("name").getText());

这种比较简单

制作不易,不喜勿喷,点个赞再走呗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值