当前位置:网站首页>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);
    }


}

原网站

版权声明
本文为[追梦梓辰]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_63719049/article/details/125425052