zoukankan      html  css  js  c++  java
  • dom4j生成、解析xml

    Java代码 复制代码 收藏代码
    1. /**    
    2.     * 创建xml    
    3.     * @param obj        泛型对象    
    4.     * @param entityPropertys 泛型对象的List集合    
    5.     * @param Encode     XML自定义编码类型   
    6.     * @param XMLPath    XML文件的路径及文件名    
    7.     * @date 2011-5-8  
    8.     * @author lujan  
    9.     */     
    10.    public void createXmlDocument(T obj, List<T> entityPropertys, String Encode,      
    11.            String XMLPath) {      
    12.        try {      
    13.            XMLWriter writer = null;// 声明写XML的对象       
    14.            OutputFormat format = OutputFormat.createPrettyPrint();      
    15.            format.setEncoding(Encode);  // 设置XML文件的编码格式 UTF-8     
    16.   
    17.            File file = new File(XMLPath);//获得文件        
    18.     
    19.            if (file.exists()) {      
    20.                file.delete();      
    21.            }      
    22.            // 创建xml文件     
    23.            Document document = DocumentHelper.createDocument();      
    24.            String rootname = obj.getClass().getSimpleName();  //获得简单类名      
    25.            Element root = document.addElement(rootname + "s");//添加根节点      
    26.            Field[] properties = obj.getClass().getDeclaredFields();//获得实体类的所有属性      
    27.            //赋值   
    28.            for (T  t : entityPropertys) {                                //递归实体      
    29.                Element element = root.addElement(rootname);            //二级节点      
    30.                for (int i = 0; i < properties.length; i++) {                         
    31.                    //反射get方法          
    32.                    Method meth = t.getClass().getMethod("get"+ properties[i].getName().substring(01).toUpperCase() + properties[i].getName().substring(1));      
    33.                    //为二级节点添加属性,属性值为对应属性的值      
    34.                    element.addElement(properties[i].getName()).setText(meth.invoke(t).toString());      
    35.                }      
    36.            }      
    37.            writer = new XMLWriter(new FileOutputStream(file), format);   
    38.            writer.write(document);      
    39.            writer.close();      
    40.        } catch (Exception e) {      
    41.            System.out.println("XML文件写入失败");    
    42.            e.printStackTrace();   
    43.        }      
    44.    }    
     
    Java代码 复制代码 收藏代码
    1. /**    
    2.   *   解析  
    3.   * @param XMLPath XML文件的路径(含名字)  
    4.   * @param t     泛型对象    
    5.   * @return  List<T>  
    6.   * @date 2011-5-8  
    7.   * @author lujn  
    8.   */       
    9.  public List<T> parserXml(String XMLPath, T t) {      
    10.      List<T> list = new ArrayList<T>();   //创建list集合      
    11.      try {      
    12.          File f = new File(XMLPath);    //读取文件             
    13.          SAXReader reader = new SAXReader();     
    14.          Document doc = reader.read(f);     //dom4j读取     
    15.          Element root = doc.getRootElement();//获得根节点      
    16.          Element secondElement;             //二级节点      
    17.          Field[] properties = t.getClass().getDeclaredFields();//获得实例的属性        
    18.   
    19.          Method setMethod = null;      
    20.          for (Iterator i = root.elementIterator(t.getClass().getSimpleName()); i.hasNext();) {   
    21.             //遍历t.getClass().getSimpleName()节点      
    22.             secondElement = (Element) i.next();         //下一个二级节点      
    23.             t = (T)t.getClass().newInstance();          //获得对象的新的实例      
    24.             Object[] args = new Object[properties.length];   
    25.             for (int j = 0; j < properties.length; j++) {   
    26.                //遍历所有孙子节点      
    27.                 //实例的set方法      
    28.                setMethod = t.getClass().getMethod("set"+ properties[j].getName().substring(01).toUpperCase()+ properties[j].getName().substring(1),properties[j].getType());   
    29.                setMethod.invoke(t,secondElement.elementText(properties[j].getName())) ;   
    30.              }      
    31.              list.add(t);      
    32.          }                
    33.      } catch (Exception e) {      
    34.          e.printStackTrace();      
    35.      }      
    36.      return list;      
    37.  }         
    38.    
  • 相关阅读:
    Delphi程序设计之惯用法
    有关ADO专题
    钓子程序代源
    delphi函数大集合
    2012暑期川西旅游之第四天(丹巴甲居藏寨小金达维日隆)
    主流F2.8标准变焦镜头信息
    2012暑期川西旅游之第一天(成都海螺沟)
    2012暑期川西旅游之第五天(四姑娘山之双桥沟)
    宾得最小饼干DA 40mm F2.8 Limited[转]
    主流F2.8标准变焦镜头信息
  • 原文地址:https://www.cnblogs.com/JohnLiang/p/2298897.html
Copyright © 2011-2022 走看看