XML解析配置文件

本文介绍了XML在JAVA中的应用,详细讲解了如何使用Propertines读取配置文件的3种方式,包括根目录下、同类名包下以及WEB-INF目录下的配置文件读取。此外,还探讨了利用dom4j和xpath解析XML文件,包括xpath的基本操作和dom4j的节点处理方法。
摘要由CSDN通过智能技术生成

XML

1.XML的作业

1.1 配置 (*.XML 和 *.propertines)
1.2 数据的交互(获取第三方数据)

2.JAVA中的3种配置位置

2.1 如何使用Propertines读取配置文件

  • ① *.propertines 文件以键值对的方式存储数据
  • ② 使用Propertines类读取配置文件

2.2 配置位置

  • ① 存放于根目录下,/代表获取src根目录的绝对路径
		InputStream ra = Demo.class.getResourceAsStream("/config.properties");
		//创建一个properties配置文件类
		Properties ppt = new Properties();
  • ② 存放于同一类的包下,不加/代表同类名包下的相对路径;
		InputStream ra = Demo.class.getResourceAsStream("config.properties");
		//创建一个properties配置文件类
		Properties ppt = new Properties();
  • ③ 存放于WEB-INF目录下
 	  ServletContext sc=this.getServletContext();
      InputStream is=sc.getResourceAsStream("/WEB-INF/db.properties");

3.dom4j+xpath解析XML文件

两个jar包 dom4j-1.6.1.jar 和 jaxen-1.1-beta-6.jar

  • 1)xpath类似数据库中的select语句;
  • 2)Document有节点(Node)组成:元素节点、属性、文本等;
  • 3)selectNodes()获取节点下所有子节点;
  • 4)selectSingleNode()获取单个节点信息;
  • 5)xpath语法:/(定位路径)、@(获取属性)
InputStream ra =
				Demo.class.getResourceAsStream("student.xml");
		
		//创建SAXRead对象
		SAXReader read = new SAXReader();
		
		
		try {
			//加载xml文件输入流并返回Document对象
			Document doc= read.read(ra);
			
			//Document 有节点(Node)组成:元素节点,属性文本等
			//获取节点的方式
			//1.selectNodes()获取所有节点的集合
			//2.selectSingleNode()获取单个节点对象
			//Xpath语法:/(定位路径),@(获取属性)
			List<Node> selectNodes = doc.selectNodes("/students/student");
			
			//循环遍历/students/student下的元素节点
			for (Node node : selectNodes) {
				//node==student元素节点
				Element elm = (Element) node; 
				//获取当前student元素节点的属性
				String pid = elm.attributeValue("pid");
				System.out.println(pid);
				
				//获取student下的子节点元素,只有一个,用selectSingleNode
				Element nameElem = 
						(Element) elm.selectSingleNode("name");
			
				String nameTxT = nameElem.getText();
				System.out.println("name="+nameTxT);
			}
				System.out.println("---------------------------------");
				//获取某个student节点的name文本
				Element elname=
						(Element) doc.selectSingleNode("/students/student[@pid='p02']");
				String namet = (elname.selectSingleNode("name")).getText();
				System.out.println(namet);
				
				System.out.println("------------------------------");
				//简化
				Element nametx=
						(Element) doc.selectSingleNode("/students/student[@pid='p01']/name");
				System.out.println(nametx.getText());
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}
	-------------运行结果---------------------------
	p01
	name=张三
	p02
	name=李四
	p03
	name=王五
	---------------------------------
	李四
	------------------------------
	张三

Student.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student pid="p01">
		<name>张三</name>
	</student>
	<student pid="p02">
		<name>李四</name>
	</student>	
	<student pid="p03">
		<name>王五</name>
	</student>		
</students>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值