当前位置:网站首页>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文件中的相关元素和节点了)
边栏推荐
- 内存溢出和内存泄漏的区别
- call undefined function openssl_ cipher_ iv_ length
- Solve the cache breakdown problem
- call undefined function openssl_cipher_iv_length
- 云计算安全扩展要求关注的安全目标和实现方式区分原则有哪些?
- 为租客提供帮助
- 2022-7-6 初学redis(一)在 Linux 下下载安装并运行 redis
- 648. 单词替换 : 字典树的经典运用
- Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
- Navicat run SQL file import data incomplete or import failed
猜你喜欢
Detr introduction
2022-7-7 Leetcode 844.比较含退格的字符串
Did login metamask
Ways to improve the performance of raspberry pie
Build a secure and trusted computing platform based on Kunpeng's native security
提升树莓派性能的方法
Best practice | using Tencent cloud AI willingness to audit as the escort of telephone compliance
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生
Xshell connection server changes key login to password login
Error lnk2019: unresolved external symbol
随机推荐
118. 杨辉三角
Navicat run SQL file import data incomplete or import failed
2022-7-6 使用SIGURG来接受外带数据,不知道为什么打印不出来
【堡垒机】云堡垒机和普通堡垒机的区别是什么?
作战图鉴:12大场景详述容器安全建设要求
供应链供需预估-[时间序列]
How to make join run faster?
Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
Thread pool reject policy best practices
现在网上开户安全么?那么网上开户选哪个证券公司?
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
【日常训练--腾讯精选50】231. 2 的幂
MySQL "invalid use of null value" solution
属性关键字Aliases,Calculated,Cardinality,ClientName
参数关键字Final,Flags,Internal,映射关键字Internal
室内ROS机器人导航调试记录(膨胀半径的选取经验)
C语言数组相关问题深度理解
Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)
Flink | 多流转换
move base参数解析及经验总结