J2EE(XMl的解析)

目录

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

                1、同包

                2、根目录

                 3、WIN-INF安全路径

 二、dom4的使用

        dom4的使用方法

三、Xpath的使用

                 

 四、案例

    1、获取所有action中的type值

    2、获取第二个action中的type值

    3、获取第二个action的所有forward的path

    4、获取第二个action的第二个forward的path


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

                1、同包

                Demo1.class.getResourceAsStream("db.properties")

                Demo1是类名

                2、根目录

                  Demo1.class.getResourceAsStream("/db.properties") 

                 3、WIN-INF安全路径

                        注意:WIN-INF文件下的jsp界面不能直接打开

                Context().getResourceAsStream("/WEN-INF/db.properties");

 二、dom4的使用

        dom4的使用方法

               1、selectNodes:根据标签名,返回标签集合

                2、selectSingleNode:根据标签名 返回单个标签,通常用于已经知晓标签只会出现一次

                3、attrlbuteValue:拿到属性值

                4、getText:拿到标签的文本内容

案例:

解析student.xml内容上述图片 

package com.zwc.parse;

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 Demo2 {
	public static void main(String[] args) throws Exception {
		InputStream in = Demo2.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		//将配置文件的所有内容取到了
		Document doc = sr.read(in);
		
//		selectNodes 根据标签名.返回标签集合
//		System.out.println(doc.asXML);
//		List<Element> selectNodes = doc.selectNodes("students");
//		System.out.println(selectNodes.size());
//		List<Element> studentEles = selectNodes.get(0).selectNodes("student");
//		System.out.println(studentEles.size());
		
//		selectNodes 根据标签名 返回单个标签,通常用于已经知晓改标签只会出现一次
		Element studentEle = (Element) doc.selectSingleNode("students");
		List<Element> studentEles = studentEle.selectNodes("student");
		for (Element stuEle : studentEles) {
			System.out.println(stuEle.attributeValue("sid"));//attributevalue是拿到属性值
			System.out.println(stuEle.selectSingleNode("name").getText());//gettext拿到标签里的内容
		}
		
		
		
		
		
	}
}

该结果是拿到ID和名字 

三、Xpath的使用

                     1、语法:/ 代表定位路径

                                      @ 代表属性

          代码如下:

package com.zwc.parse;

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 Exception {
//	/:代表查找
//	@:代表精准定位
		InputStream in = Demo3.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		Document doc = sr.read(in);
		Element stus002 = (Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
		System.out.println(stus002.getText());
		
		
	}
}	

 运行结果:

 

 四、案例

        下面是config.xml界面

        ​​​​​​​

    1、获取所有action中的type值

        代码如下:

package com.zwc.parse;

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 Demo4 {
public static void main(String[] args) throws Exception {
//	获取所有action中type的值
	InputStream in = Demo4.class.getResourceAsStream("config.xml");
	SAXReader sr = new SAXReader();
	Document doc = sr.read(in);
	Element node = (Element) doc.selectSingleNode("config");
	List<Element> list = node.selectNodes("action");
	for (Element stuele : list) {
		System.out.println(stuele.attributeValue("type"));
	}
}
}

运行结果如下:

    2、获取第二个action中的type值

        代码如下:

package com.zwc.parse;

import java.io.InputStream;
import java.util.List;

import javax.el.ELManager;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Demo5 {
public static void main(String[] args) throws Exception {
	//获取第二个action中type的值
	InputStream in = Demo4.class.getResourceAsStream("config.xml");
	SAXReader sr = new SAXReader();
	Document doc = sr.read(in);
	Element selectSingleNode = (Element) doc.selectSingleNode("config");
	List<Element> selectNodes = selectSingleNode.selectNodes("action");
	for (Element stuele : selectNodes) {
		if("/loginAction".equals(stuele.attributeValue("path"))) {
			System.out.println(stuele.attributeValue("type"));
		}
	}
}
}

运行结果如下:

 

3、获取第二个action的所有forward的path

代码如下:

package com.zwc.parse;

import java.io.InputStream;
import java.util.List;


import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Demo6 {
public static void main(String[] args) throws Exception {
	InputStream in = Demo6.class.getResourceAsStream("config.xml");
	SAXReader sr = new SAXReader();
	Document doc = sr.read(in);
	Element singleNode = (Element) doc.selectSingleNode("config");
	List<Element> selectNodes = singleNode.selectNodes("action");
	List<Element> nodes = selectNodes.get(1).selectNodes("forward");
	for (Element element : nodes) {
		System.out.println(element.attributeValue("path"));
}
}
}

运行结果:

 

4、获取第二个action的第二个forward的path

代码如下:

package com.zwc.parse;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Demo7 {
public static void main(String[] args) throws Exception {
	InputStream in = Demo6.class.getResourceAsStream("config.xml");
	SAXReader sr = new SAXReader();
	Document doc = sr.read(in);
	Element singleNode = (Element) doc.selectSingleNode("config");
	List<Element> selectNodes = singleNode.selectNodes("action");
	List<Element> nodes = selectNodes.get(1).selectNodes("forward");
	for (Element element : nodes) {
		if("success".equals(element.attributeValue("name")))
		System.out.println(element.attributeValue("path"));
	}
}
}

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值