当前位置:网站首页>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文件中的相关元素和节点了)
边栏推荐
- Drawerlayout suppress sideslip display
- Advanced Mathematics - Chapter 8 differential calculus of multivariate functions 1
- Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
- Beginner XML
- Help tenants
- Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
- THINKPHP框架的优秀开源系统推荐
- 室内ROS机器人导航调试记录(膨胀半径的选取经验)
- Build a secure and trusted computing platform based on Kunpeng's native security
- Sliding rail stepping motor commissioning (national ocean vehicle competition) (STM32 master control)
猜你喜欢
Ogre introduction
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
提升树莓派性能的方法
Esp32 construction engineering add components
MySQL error 28 and solution
Fast development board pinctrl and GPIO subsystem experiment for itop-imx6ull - modify the device tree file
How far can it go to adopt a cow by selling the concept to the market?
2022-7-6 Leetcode 977.有序数组的平方
作战图鉴:12大场景详述容器安全建设要求
Getting started with cinnamon applet
随机推荐
Error lnk2019: unresolved external symbol
Take you to master the three-tier architecture (recommended Collection)
Laravel form builder uses
Esp32 ① compilation environment
提升树莓派性能的方法
Getting started with MySQL
566. Reshaping the matrix
118. Yanghui triangle
高等数学---第八章多元函数微分学1
"Song of ice and fire" in the eleventh issue of "open source Roundtable" -- how to balance the natural contradiction between open source and security?
Detr introduction
Flink | multi stream conversion
566. 重塑矩阵
Evolution of customer service hotline of dewu
"New red flag Cup" desktop application creativity competition 2022
室內ROS機器人導航調試記錄(膨脹半徑的選取經驗)
Cinnamon taskbar speed
move base参数解析及经验总结
Solve the cache breakdown problem
社会责任·价值共创,中关村网络安全与信息化产业联盟对话网信企业家海泰方圆董事长姜海舟先生