XML解析

一.XML作用

1.1配置 
   *.xml和*.properties、*.ini、*.yaml

1.2数据交互(获取第三方数据)
   XML:webservices(axis2) -> xml -> 手机归属地、天气
   JSON  ajax 无刷新

<?xml version="1.0" encoding="UTF-8"?>
 <tianqi>
    <city>长沙</city>
    <remark>暴雨转冰雹</remark>
 </tianqi>


username=\u8D75\u56DB
password=123456

二.Java中3种配置位置及读取方式

   2.1如何使用Properties读取配置文件
      1)*.properties文件以键值对的方式存储数据;
      2)使用Properties类读取配置文件;
	

   2.2 配置位置
      1)存放于根目录下,/代表获取src根目录的绝对路径
      2)存放于同一类的包下,不加/代表同类名包下的相对路径;
      3)存放于WEB-INF目录下

package com.zking.XML.util;

import java.io.InputStream;

public class Demo2 {

	public static void main(String[] args) {
		//  1)存放于根目录下,/代表获取src根目录的绝对路径
		InputStream is = Demo2.class.getResourceAsStream("/student.xml");
		System.out.println(is);
	    //  2)存放于同一类的包下,不加/代表同类名包下的相对路径;
		InputStream is1 = Demo2.class.getResourceAsStream("demo.properties");
	    System.out.println(is1);
		//  3)存放于WEB-INF目录下
		
	    
	}
	
}

三..dom4j+xpath解析xml文件 

    1)xpath类似数据库中的select语句;
    2)Document有节点(Node)组成:元素节点、属性、文本等;
    3)selectNodes()获取节点下所有子节点;
    4)selectSingleNodes()获取单个节点信息;
    5) xpath语法:/(定位路径)、@(获取属性)
    案例:解析student.xml

package com.zking.XML.util;

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

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

public class Demo3 {

	public static void main(String[] args) {
		//获取student.xml文件
		InputStream is = Demo3.class.getResourceAsStream("/student.xml");
		//创建SaxReader
		SAXReader saxReader=new SAXReader();
		//读取文件输入流并转换成Document
		try {
			//Document:文档对象,包含了元素 属性以及文本
			Document document=saxReader.read(is);
			//循环读取
			//1) selectSingleNode:获取单个节点
			//2) selectNodes:获取多个节点
			List<Node> node = document.selectNodes("/students/student");
			for (Node node2 : node) {
				//将Node节点转换成元素节点(student)
				Element elem=(Element) node2;
				//获取节点中的属性
				String pid = elem.attributeValue("pid");
				System.out.println("pid="+pid);
				//获取student节点下的name节点
				Node nameNode = elem.selectSingleNode("name");
				//将Node节点转换成元素节点
				Element nameElem=(Element) nameNode;
				//获取name节点的文本
				String text = nameElem.getText();
				System.out.println(text);
			}
			System.out.println();
			//直接一行搞定获取student.xml中<student pid="p02">中的name属性的文本,一行代码搞定
			String text = document.selectSingleNode("/students/student[@pid='p02']/name").getText();
			System.out.println (text);
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}
	
}



<?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、付费专栏及课程。

余额充值