xml解析

3 篇文章 0 订阅

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

1、同胞下的资源文件

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、将所有的资源文件放在根目录下

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下
WEB-INF(或其子目录下)

public class PropertiesServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1160110259263103368L;

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

附上:eclipse在创建Web项目的时候忘记勾选创建web.xml

如果在javaEE开发过程中,使用eclipseEE创建Web项目的时候,在最后忘记勾选创建web.xml
这时候,可以右击你创建的项目名  ---->Java EE Tools---->Generate Deployment  Descriptor Stub
这时候就成功创建了web.xml

在这里插入图片描述

XML的作用

配置
*.properties

*.xml

数据交换
xml
webservice
json

注意:
*.properties文件

   key=value

   # 注释

   Properties.load(in)

dom4j+xpath解析xml文件

dom4j:Java开源的项目

DOM由节点组成

   Node

     元素节点

     属性节点

     文本节点

document.selectNodes(xpath);//查一组

document.selectSingleNode(xpath);//查单个

xpath

/ 定位路径 在系统中建一个文件叫document/students/student/sid|name

@ 属性

students.xml

properties文件的解析方式有java.util.properties这个类来完成
xml文件:应该有一个工具类来完成
jdk/jdom
sax解析 由上往下解析
dom4j解析 由外到内解析

Dom4j案例一:

package com.zking.xml.parse;

import java.io.InputStream;
import java.util.List;

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

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());
		List<Element> stuEles = doc.selectNodes("/students/student");
		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());
			}
		}
	}
}

案例二:如果知道学生的ID直接找出对应的学生

package com.zking.xml.parse;

import java.io.InputStream;
import java.util.List;

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

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);
		//stuEleS003  : 学生学号    @  : 属性
		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、付费专栏及课程。

余额充值