当前位置:网站首页>XML建模
XML建模
2022-06-24 23:52:00 【追梦梓辰】
利用dom4j+xpath技术实现XML建模
思维导图:

案例代码:
public class ConfigTe {
//配置默认地址
private static final String defual_path="../J2EE05/config.xml";
private ConfigTe() {
}
/** * 建模方法 * @param path 地址 * @return * @throws DocumentException */
public static ConfigMod createConfigTe(String path) throws DocumentException {
String actiontype = null;
String actionpath = null;
String name = null;
String paths = null;
String redirect= null;
ActionMod am = null;
//获取io流
InputStream is = ConfigTe.class.getResourceAsStream(path);
//读取器
SAXReader sr = new SAXReader();
//读取配置文件,获取document对象
Document doc = sr.read(is);
//使用xpath解析对象
//config节点
List<Node> config = doc.selectNodes("config");
ConfigMod configMod = new ConfigMod();
for (Node c : config
) {
//action节点
List<Node> action = c.selectNodes("action");
for (Node a : action
) {
am = new ActionMod();
Element ea = (Element) a;
actiontype = ea.attributeValue("type");
actionpath = ea.attributeValue("path");
am.setPath(actionpath);
am.setType(actiontype);
//forward节点
List<Node> forward = a.selectNodes("forward");
for (Node f : forward
) {
Element el = (Element) f;
name = el.attributeValue("name");
paths = el.attributeValue("path");
redirect = el.attributeValue("redirect");
ForwardMod fm = new ForwardMod(name, paths, redirect);
am.put(fm);
}
configMod.put(am);
}
}
return configMod;
}
public static ConfigMod createConfigTe() throws DocumentException {
return createConfigTe(defual_path);
}
public static void main(String[] args) throws DocumentException {
ConfigMod configTe = ConfigTe.createConfigTe();
ActionMod s = configTe.get("/regAction");
System.out.println(s);
ForwardMod f =s.get("failed");
System.out.println(f);
}
}
以ActionMod 为例:
public class ActionMod {
private Map<String,ForwardMod> action = new HashMap<>();
private String type;
private String path;
@Override
public String toString() {
return "ActionMod{" +
"action=" + action +
", type='" + type + '\'' +
", path='" + path + '\'' +
'}';
}
public ActionMod(Map<String, ForwardMod> action, String type, String path) {
this.action = action;
this.type = type;
this.path = path;
}
public ActionMod(Map<String, ForwardMod> action, String type) {
this.action = action;
this.type = type;
}
public ActionMod() {
}
public Map<String, ForwardMod> getAction() {
return action;
}
public void setAction(Map<String, ForwardMod> action) {
this.action = action;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
/** * 存forwar对象 * @param forward 对象 */
public void put(ForwardMod forward){
this.action.put(forward.getName(),forward);
}
/** * 拿到节点 * @param forname 主键 * @return forward对象 */
public ForwardMod get(String forname){
return this.action.get(forname);
}
}
边栏推荐
- Can the polardb database be connected to the data source through MySQL
- yarn : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本
- CUDA编程入门极简教程
- 高数 | 精通中值定理 解题套路汇总
- 14 BS object Node name Name attrs string get node name attribute content
- [analysis of STL source code] functions and applications of six STL components (directory)
- Go synchronization waiting group
- 商城项目 pc----商品详情页
- Yarn: unable to load file c:\users\xxx\appdata\roaming\npm\yarn PS1 because running scripts is prohibited on this system
- Distributed transaction solutions and code implementation
猜你喜欢

AOSP ~ WIFI架构总览

leecode学习笔记-机器人走到终点的最短路径

vie的刷新机制

Insurance can also be bought together? Four risks that individuals can pool enough people to buy Medical Insurance in groups

记一次beego通过go get命令后找不到bee.exe的坑

Software testing weekly (issue 77): giving up once will breed the habit of giving up, and the problems that could have been solved will become insoluble.

Transformers Roberta如何添加tokens

left join on和 join on的区别

Pytorch learning notes (VII) ------------------ vision transformer

使用ShaderGraph制作边缘融合粒子Shader的启示
随机推荐
记一次beego通过go get命令后找不到bee.exe的坑
Of the seven levels of software testers, it is said that only 1% can achieve level 7
Pytorch learning notes (VII) ------------------ vision transformer
VSCode中如何实现点击DOM自动定位到相应代码行
ACL access control of squid proxy server
F - Spices(线性基)
微信小程序获取扫描二维码后携带的参数
Network planning | [four network layers] knowledge points and examples
Squid 代理服务器之 ACL 访问控制
vie的刷新机制
软件测试周刊(第77期):只要放弃一次,就会滋生放弃的习性, 原本可以解决的问题也会变得无法解决。
3 years of testing experience. I don't even understand what I really need on my resume. I need 20K to open my mouth?
Transformers Roberta如何添加tokens
MySQL command backup
After reciting the eight part essay, I won the hemp in June
Unity存档系统——Json格式的文件
Charles 抓包工具
好用的字典-defaultdict
GO同步等待组
Tell you about mvcc sequel