6 .XML解析

这篇博客主要介绍了XML在配置和数据交互中的应用,以及在Java中如何使用Properties读取配置文件。通过示例代码展示了从类路径下读取配置文件和XML文件的方法,并利用dom4j和XPath解析XML文件,获取所需信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.XML作用

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

1.2数据交互(获取第三方数据)

   XML:webservices(axis2) -> xml -> 手机归属地、天气
   JSON  ajax 无刷新

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

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

 Demo1.java 

public static void main(String[] args) throws IOException {

		/**
		 * 只要是跟文件相关的都要抛异常
		 */
		// 1. 获取文件输入流
		InputStream is = Demo1.class.getResourceAsStream("demo.properties");
		// 2.创建properties对象
		Properties prop = new Properties();
		// 3.加载文件输入流
		prop.load(is);
		// 4.读取配置文件内容
		String username = prop.getProperty("username");
		String password = prop.getProperty("password");
		Object url = prop.getOrDefault("url", "//www.baidu.com");
		System.out.println("username=" + username + ",password=" + password);
		System.out.println("url=" + url);
	}

 Demo2.java

public static void main(String[] args) throws IOException {

		/**
		 * 只要是跟文件相关的都要抛异常
		 */
		// 1. 获取文件输入流
		InputStream is = Demo1.class.getResourceAsStream("demo.properties");
		// 2.创建properties对象
		Properties prop = new Properties();
		// 3.加载文件输入流
		prop.load(is);
		// 4.读取配置文件内容
		String username = prop.getProperty("username");
		String password = prop.getProperty("password");
		Object url = prop.getOrDefault("url", "//www.baidu.com");
		System.out.println("username=" + username + ",password=" + password);
		System.out.println("url=" + url);
	}

   2.2 配置位置 

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

 Demo3.java


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

 

3.dom4j+xpath解析xml文件 

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

 Demo4.java 

public static void main(String[] args) {
		// 1.读取Student.xml文件输入流
		InputStream si = Demo3.class.getResourceAsStream("/student.xml");
		// 2.创建SAXRreader对象
		SAXReader saxRead = new SAXReader();
		// 3.读取文件输入流并转换成Document对象
		// Document:包含元素节点,属性
		try {
			Document doc = saxRead.read(si);
			// 4.循环遍历
			// 1)selectNodes:获取多个节点,返回List
			// 2)selectSingleNode:获取单个节点
			// 3)xpath语法:/代表定位路径
			List<Node> root = doc.selectNodes("/students/student");
			for (Node node : root) {
				// 5.将Node节点转换成元素节点Element(Student)
				Element elem = (Element) node;
				// 6.获取元素节点的属性
				String pid = elem.attributeValue("pid");
				System.out.println("pid=" + pid);
				// 7.获取Student节点下的name节点
				Node nameNode = elem.selectSingleNode("name");
				System.out.println(nameNode.getText());
			}
			// 简化xpath
			// //*[@bid="title-content"]/span[1]
			Node no = doc.selectSingleNode("students/student[@pid='p02']/name");
			System.out.println(no.getText());
		} catch (DocumentException e) {
			e.printStackTrace();
		}

	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值