XML简介:XML是一种格式,XML的前身是标准通用标记语言,是自IBM从60年代就开始发展的通用标记语言。它是一种简单的数据存储语言。
目录:
1.什么是XML?
2.XML的作用
3.Java中3种配置位置及读取方式
4.dom4j+xpath解析xml文件
XML:可拓展标记语言
XML的作用
1.1配置 *.xml和*.properties、*.ini、*.yaml
1.2数据交互(获取第三方数据)
XML:webservices(axis2) -> xml -> 手机归属地、天气
JSON ajax 无刷新
Java中3种配置位置及读取方式
1、如何使用Properties读取配置文件
1)*.properties文件以键值对的方式存储数据;
2)使用Properties类读取配置文件;2、配置位置
1)存放于根目录下,/代表获取src根目录的绝对路径InputStream is = Demo2.class.getResourceAsStream("/student.xml");
2)存放于同一类的包下,不加/代表同类名包下的相对路径;
InputStream is1 = Demo2.class.getResourceAsStream("demo.properties");
3)存放于WEB-INF目录下
Demo.java (案例1) 读取配置文件
package com.zking.xmlAnlysis.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Demo1 {
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", "http://www.baidu.com");
System.out.println("username="+username+",password="+password);
System.out.println("url="+url);
}
}
dom4j+xpath解析xml文件
1)xpath类似数据库中的select语句;
2)Document有节点(Node)组成:元素节点、属性、文本等;
3)selectNodes()获取节点下所有子节点;
4)selectSingleNodes()获取单个节点信息;
5) xpath语法:/(定位路径)、@(获取属性)
Demo3.java (案例3)
package com.zking.xmlAnlysis.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) throws DocumentException {
//1.获取student.xml文件输入流
InputStream is = Demo3.class.getResourceAsStream("/student.xml");
//System.out.println(is);
//2.创建SAXReader对象
SAXReader saxReader = new SAXReader();
//3.读取文件输入流并转换成Document对象
//Document:包含元素节点、属性以及文本
Document read = saxReader.read(is);
//4.循环遍历
//1)selectNodes:获取多个节点,返回List
//2)selectSingleNode:获取单个节点
//3)xapth语法:/代表定位路径
List<Node> root = read.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语法
Node node2 = read.selectSingleNode("/students/student[@pid='p02']/name");
System.out.println(node2.getText());
}
}
}