zoukankan      html  css  js  c++  java
  • Xml 解析

    dom4j  分 dom解析 和 sax 两种解析 xml的 方式:

    1 dom 解析:

    将xml 下的指定节点 转换成map

    public static List<Map<String, String>> xmlToList(String documentXml,String nodeString) throws DocumentException{
    Document d = DocumentHelper.parseText(documentXml);
    /**Node 中的 valueOf(xpath)  和 selectSingleNode(xpath)的中的方法直接获得节点值 
    System.out.println(d.valueOf("//head/code").trim());
    String ss = d.selectSingleNode("//message").getText();*/
    //document 没有自己的查元素的方法
    //element 有 xml-map
    List<Node> list = d.selectNodes("//"+nodeString);
    List<Map<String, String>> listReturn = new ArrayList<Map<String, String>>();
    for(Node node : list){
    Element e = (Element)node;
    Iterator<?> it = e.elementIterator();
    Map<String,String> map = new HashMap<String,String>();
    while(it.hasNext()){
    Element ee = (Element)it.next();
    map.put(ee.getQualifiedName(), ee.getText());/**节点标签名称、节点标签值*/
    }
    listReturn.add(map);
    }
    return listReturn;
    }

     接收的时候 如何将map 直接映射成业务bean?

    public static List<Object> mapToBean(List<Map<?,?>> list,Object obj) throws Exception {
    List<Object> listR = new ArrayList<Object>();
    try{
    Method[] methods = obj.getClass().getMethods();/**获得类对象的方法*/
        for(Map<?, ?> map : list){
        Object objNew = obj.getClass().newInstance();/**每次生成一个新的传入对象*/
        for(Method method : methods){
        String methodName = method.getName();
        if(methodName.startsWith("set")){/**对set方法操作*/
       String key =  methodName.substring(3).toLowerCase();/**截取set方法后的字符作为属性*/
        String value = (String)map.get(key);
        method.invoke(objNew, value);/**给新对象的该方法通过反射赋值*/
        }
        }
        listR.add(objNew);
        }
    }catch(Exception e ){
    throw new Exception("map 反射 bean 异常!");
    }          
    return listR;
     
    }
  • 相关阅读:
    剩下的树
    守形数
    小白鼠排队(map容器插入数据的四种方法)
    字母统计
    与7无关的数
    ZOJ
    基于js的CURD插件
    API验证插件
    Django之权限管理插件
    Django之信号和序列化
  • 原文地址:https://www.cnblogs.com/leonkobe/p/3317083.html
Copyright © 2011-2022 走看看