当前位置:网站首页>XML文件的解析操作
XML文件的解析操作
2022-07-07 11:59:00 【小阿飞_】
本期精彩
目录
需具备的知识
1、Java中配置文件的三种配置位置及读取方式
类名.class.getResourceAsStream("xxx"):拿到同包下的文件
类名.class.getResourceAsStream("/xxx"):拿到根目录下的文件
context.getResourceAsStream("/WIN-INF/xxx"):拿到WIN-INF安全路径
2、dome4j常用方法
selectNodes:拿到多个元素
selectSingleNode:拿到单个元素
getRootElement():拿到根元素
attributeValue:只有元素才可以点出这个方法来获取值
getText:拿到元素文本
注:元素可以是节点,但是元素中的属性是节点不是元素
3、xpath语法
/:定位路径
@:属性
解析XML的代码操作
1、需要解析的XML案例(config.xml文件)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE config[
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ELEMENT forward EMPTY>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name CDATA #REQUIRED
path CDATA #REQUIRED
redirect (true|false) "false"
>
]>
<config>
<action path="/studentAction" type="org.lisen.mvc.action.StudentAction">
<forward name="students" path="/students/studentList.jsp" redirect="false"/>
</action>
<action path="/studentAction02" type="org.lisen.mvc.action.StudentAction">
<forward name="students02" path="/students/studentList.jsp" redirect="false"/>
</action>
</config>
2、在编写解析代码之前需要导入的jar包
3、编写解析操作的代码
public class XmlReader {
public static void main(String[] args) throws Exception {
InputStream in = XmlReader.class.getResourceAsStream("/config.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
Element rootElement = doc.getRootElement();
List<Element> actions = rootElement.selectNodes("action");
for(Element e: actions) {
String path = e.attributeValue("path");
String type = e.attributeValue("type");
System.out.println("action path = "+path);
System.out.println("action type = "+type);
List<Element> forwards = e.selectNodes("forward");
for(Element f: forwards) {
String name = f.attributeValue("name");
String fPath = f.attributeValue("path");
String redirect = f.attributeValue("redirect");
System.out.println("forward name = "+name);
System.out.println("forward fPath = "+fPath);
System.out.println("forward redirect = "+redirect);
}
System.out.println("已结束解析");
}
}
}
输出结果(可以看到已经获取到了上面所提供的XML文件中的相关元素和节点了)
边栏推荐
- 118. 杨辉三角
- Redis can only cache? Too out!
- Laravel5 call to undefined function OpenSSL cipher IV length() error php7 failed to open OpenSSL extension
- How does MySQL control the number of replace?
- PostgreSQL array type, each splice
- 实现IP地址归属地显示功能、号码归属地查询
- Excellent open source system recommendation of ThinkPHP framework
- 【日常训练--腾讯精选50】231. 2 的幂
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- "New red flag Cup" desktop application creativity competition 2022
猜你喜欢
Esp32 construction engineering add components
Xshell connection server changes key login to password login
LIS longest ascending subsequence problem (dynamic programming, greed + dichotomy)
Detr introduction
10 pictures open the door of CPU cache consistency
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
Centso7 OpenSSL error Verify return code: 20 (unable to get local issuer certificate)
566. 重塑矩阵
《厌女:日本的女性嫌恶》摘录
Flask session forged hctf admin
随机推荐
请问指南针股票软件可靠吗?交易股票安全吗?
xshell连接服务器把密钥登陆改为密码登陆
What parameters need to be reconfigured to replace the new radar of ROS robot
Vmware 与主机之间传输文件
TPG x AIDU | AI leading talent recruitment plan in progress!
接口自动化测试-接口间数据依赖问题解决
Drawerlayout suppress sideslip display
Laravel5 call to undefined function OpenSSL cipher IV length() error php7 failed to open OpenSSL extension
LeetCode简单题分享(20)
[daily training -- Tencent select 50] 231 Power of 2
Oracle advanced (V) schema solution
如何让join跑得更快?
Distributed transaction solution
Realize the IP address home display function and number home query
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
Esp32 series column
Redis只能做缓存?太out了!
mysql 局域网内访问不到的问题
Split screen bug notes
实现IP地址归属地显示功能、号码归属地查询