您的位置:首页 > 其它

XML解析

2019-05-26 23:15 155 查看

标题

概念

Document Object Model(文档对象模型) 将HTML或XML在内存中解析成一棵树(将XML文本读入到内存,形成一棵树)。
对节点进行CRUD操作。  树有节点的概念(Node)
节点类型 文档节点 元素节点 属性节点 文本节点 注释节点

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

1.1 XML和*.properties(属性文件)
1.2 存放位置
1.2.1 src根目录下
Xxx.class.getResourceAsStream("/config.properties");
1.2.2 与读取配置文件的类在同一包
Xxx.class.getResourceAsStream("config2.properties");
1.2.3 WEB-INF(或其子目录下)
ServletContext application = this.getServletContext();
InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties");

XML解析

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

首先这是我的xml文件

我要通过dom4j+xpath解析xml文件,首先我们需要导入两个jar包dem4和jaxen(没有的可以去网上下载)
现在我们要获取到sid=s003的name值

public static void main(String[] args) throws DocumentException {
InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
//		System.out.println(doc.asXML());//输出整个xml文件的值
//		1、获取到所有的学生
List<Element> stules = doc.selectNodes("/students/student");//查student这一组节点
//		2、遍历
for (Element stu : stules) {
if("s003".equals(stu.attributeValue("sid"))) {
Node nameEle = stu.selectSingleNode("name");//查name单个节点
//				System.out.println(nameEle.asXML());//打印<name>小王</name>
System.out.println(nameEle.getText());//打印小王,这是第一种方法,通过遍历判断
}
}
//		做判断、如果sid=s003那么拿到小王
Node stuEleS003 = doc.selectSingleNode("/students/student[@sid='s003']");
System.out.println(stuEleS003.selectSingleNode("name").getText());
}

两种方法都放出来了,所以应该打印了两个小王

总结xml配置文件和properties配置文件的区别

properties配置文件,风格是一个属性对应于一个值(key = value)这样的键值匹对模式。这样给我的感觉就是每一行properties配置文件的键值,对应着一次赋值。事实上,如果你试验一下,在前后两行properties文件中给同一个属性赋不同值,得到的结果往往是属性是后面赋值的值。properties的局限性在于,只能处理赋值。
xml配置文件则是一个树的结构,因此,可以处理各种各样定义好的情况,例如add一个属性之类的,这在properties配置文件中就没有办法实现了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: