当前位置:网站首页>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文件中的相关元素和节点了)

边栏推荐
- Getting started with cinnamon applet
- 属性关键字Aliases,Calculated,Cardinality,ClientName
- Use of polarscatter function in MATLAB
- Enregistrement de la navigation et de la mise en service du robot ROS intérieur (expérience de sélection du rayon de dilatation)
- Oracle advanced (V) schema solution
- Talk about pseudo sharing
- Excerpt from "misogyny: female disgust in Japan"
- Evolution of customer service hotline of dewu
- Introduction to database system - Chapter 1 introduction [conceptual model, hierarchical model and three-level mode (external mode, mode, internal mode)]
- PostgreSQL array type, each splice
猜你喜欢

C语言数组相关问题深度理解

实现IP地址归属地显示功能、号码归属地查询

提升树莓派性能的方法

Talk about pseudo sharing

Build a secure and trusted computing platform based on Kunpeng's native security

《厌女:日本的女性嫌恶》摘录

Redis can only cache? Too out!

LIS longest ascending subsequence problem (dynamic programming, greed + dichotomy)
![Supply chain supply and demand estimation - [time series]](/img/2c/82d118cfbcef4498998298dd3844b1.png)
Supply chain supply and demand estimation - [time series]

Flask session forged hctf admin
随机推荐
648. 单词替换 : 字典树的经典运用
Distributed transaction solution
How can the PC page call QQ for online chat?
使用day.js让时间 (显示为几分钟前 几小时前 几天前 几个月前 )
. Net core about redis pipeline and transactions
How far can it go to adopt a cow by selling the concept to the market?
属性关键字Aliases,Calculated,Cardinality,ClientName
648. Word replacement: the classic application of dictionary tree
【日常训练】648. 单词替换
Excellent open source system recommendation of ThinkPHP framework
2022-7-6 Leetcode 977.有序数组的平方
Ogre introduction
Lavarel之环境配置 .env
高等數學---第八章多元函數微分學1
Centso7 OpenSSL error Verify return code: 20 (unable to get local issuer certificate)
Cinnamon taskbar speed
接口自动化测试-接口间数据依赖问题解决
MySQL error 28 and solution
What parameters need to be reconfigured to replace the new radar of ROS robot
call undefined function openssl_ cipher_ iv_ length