当前位置:网站首页>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);
}
}
边栏推荐
- 请问polarDB数据库可以通过mysql进行数据源连接吗
- 把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(4)—— 修改 oracle11g rac 集群的 scanIP
- 14 bs对象.节点名称.name attrs string 获取节点名称 属性 内容
- Call system function security scheme
- UnityShader入门精要——表面着色器
- Difference between left join on and join on
- 运行时修改Universal Render Data
- Once beego failed to find bee after passing the go get command Exe's pit
- 使用XXL-JOB自定义任务并调度
- qt打包exe文件,解决“无法定位程序输入点_ZdaPvj于动态链接库Qt5Cored.dll”
猜你喜欢
[live review] battle code pioneer phase 7: how third-party application developers contribute to open source
Transformers Roberta如何添加tokens
mysql学习笔记--单张表上的增删改查
Array - fast and slow pointer in one breath
用向量表示两个坐标系的变换
消息称一加将很快更新TWS耳塞、智能手表和手环产品线
记一次beego通过go get命令后找不到bee.exe的坑
3 years of testing experience. I don't even understand what I really need on my resume. I need 20K to open my mouth?
Getting started with unityshader - Surface Shader
PyTorch学习笔记(七)------------------ Vision Transformer
随机推荐
记一次beego通过go get命令后找不到bee.exe的坑
Unity archive system - file in JSON format
random list随机生成不重复数
Dirvish Chinese document of vim
Yarn: unable to load file c:\users\xxx\appdata\roaming\npm\yarn PS1 because running scripts is prohibited on this system
Advanced usage of groovy
自动化测试
分布式事务解决方案和代码落地
用向量表示两个坐标系的变换
After reciting the eight part essay, I won the hemp in June
[live review] battle code pioneer phase 7: how third-party application developers contribute to open source
ACM. HJ75 公共子串计算 ●●
打新债100%中签的方法 开户是安全的吗
MySQL command backup
对进程内存的实践和思考
计网 | 【四 网络层】知识点及例题
Modifying universal render data at runtime
把 Oracle 数据库从 Windows 系统迁移到 Linux Oracle Rac 集群环境(4)—— 修改 oracle11g rac 集群的 scanIP
mysql命令备份
Practice and Thinking on process memory