xml解析代码以及操作流程
1. Java中配置文件的三种配置位置及读取方式
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());
代码执行结果
总结:在获取资源文件的时候要注意路径的问题,是同包或者不同,这个地方有时候容易粗心忘记掉。希望能够帮助你们~