xml解析

xml解析代码以及操作流程

1 配置文件

1.1存放位置

1.1存放的路径不同获取的方式也不同
存放的路径不同获取的方式也不同

1.2读取方式

1.2读取方式
     1.2.1 src根目录下

//流对象  in  XXXX指的是类名   ("/xxx.xx")中的"/"代表的是根路径  
InputStream in = XXXX.class.getResourceAsStream("/xxx.xx");

     1.2.2 与读取配置文件的类在同一包

//流对象  in  XXXX指的是类名  xxx.xx指的是要读取的资源文件名
InputStream in = XXXX.class.getResourceAsStream("xxx.xx");

    1.2.3 WEB-INF(或其子目录下)

//servlect中不能直接使用getResourceAsStream调用
//要先获取上下文 context
ServletContext context = request.getServletContext();
//通过context去调用getResourceAsStream
//xxx.xx指的是要读取的资源文件名
InputStream in = context.getResourceAsStream("/WEB-INF/xxx.xx");


1.3所需jar包

在这里插入图片描述

2 XML的概念以及作用

2.1XML概念

XML 即可扩展标记语言(Extensible Markup Language),是一种平台无关的表示数据的方法
标记语言:是一种将文本以及文本相关的其他信息结合起来,展现出文档结构和数据处理细节的电脑文字编码

2.2XML作用

2.1XML的作用
在不同的系统中共享和交互数据数据结构化和具有可读性

3dom4j+xpath解析xml文件

案例
需获取名字为小芳,id=soo2的学生信息,然后在控制台打印.
资源文件位置跟内容
①位置
在这里插入图片描述
②内容
在这里插入图片描述

3.1dom4j读取文件
		//1.加载资源文件
		InputStream in= Demo3.class.getResourceAsStream("/students.xml");
		//2.利用Dome4j进行解析
		//解析得到所有的student标签
		SAXReader reader=new SAXReader();
		//加载流对象   返回整个xml
		Document read = reader.read(in);
		//测试是否拿到
		//System.out.println(read.asXML());
		List<Element> selectNodes = read.selectNodes("/students/student");
		for (Element element : selectNodes) {
			//测试输出
			//System.out.println(element.asXML());
			//System.out.println("-----------------");
			//进行条件判断
			if("s002".equals(element.attributeValue("sid"))) {
				//通过dom4j的Element进行获取name值
				Element	el=(Element) element.selectSingleNode("name");
				//打印输出				
				System.out.println("sid="+element.attributeValue("sid")+",name="+el.getText());
			}
		}

代码执行结果
在这里插入图片描述

3.2dom4j+xpath读取文件
		//1.加载资源文件
		InputStream in= Demo4.class.getResourceAsStream("/students.xml");
		//2.利用Dome4j进行解析
		//解析得到所有的student标签
		SAXReader reader=new SAXReader();
		//加载流对象   返回整个xml
		Document read = reader.read(in);
		Element el=(Element) read.selectSingleNode("/students/student[@sid='s002']");
		//System.out.println(el.asXML());
		Element nameel=(Element) el.selectSingleNode("name");
		System.out.println("sid="+el.attributeValue("sid")+",name="+nameel.getText());

代码执行结果
在这里插入图片描述

总结:在获取资源文件的时候要注意路径的问题,是同包或者不同,这个地方有时候容易粗心忘记掉。希望能够帮助你们~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值