解析 创建 xml

来源:互联网 发布:apache编译参数详解 编辑:程序博客网 时间:2024/06/03 12:34

/**
 *
 */
package com.city.util;

import java.beans.PropertyDescriptor;
import java.io.ByteArrayInputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.junit.Test;

import com.city.pojo.BaseBean;
import com.city.pojo.UserInfo;

/**
 * @author chendz 2012-7-3 下午04:50:08
 *
 */
public class BuildXml implements BuildFile {

 public <T extends BaseBean> String builder(T obj) {
  List<BaseBean> list = new ArrayList<BaseBean>();
  list.add(obj);
  return this.builder(list);
 }

 /* (non-Javadoc)
  * @see com.itrus.remote.BuildFile#builder(java.util.List)
  */
 public <T extends BaseBean> String builder(List<T> list) {
  Document document = DocumentHelper.createDocument();
  Element root = document.addElement("root");
  for(Object obj : list)
  {
   Element ele = root.addElement("user");
   //添加节点
   try {
    this.addElement(ele , obj);
   } catch (Exception e) {
    throw new RuntimeException(e);
   }
  }
  return root.asXML();
 }

 private void addElement(Element ele , Object obj) throws Exception{
  Class<?> clazz = obj.getClass();
  Field[] fs = clazz.getDeclaredFields();
  for(Field field : fs)//遍历字段
  {
   PropertyDescriptor pd = new PropertyDescriptor(field.getName(),clazz);
   Method getMethod = pd.getReadMethod();
   Element element = ele.addElement(field.getName());
   //如果pojo对象的属性不为空,则加入到节点的text中
   if(getMethod.invoke(obj) != null)
   {
    element.addText(getMethod.invoke(obj).toString());
   }
  }
 }
 
 /**解析xml
  * @author wangxinying 2012-10-22 下午10:37:38
  *
  */
 public Map  parseXML(String xml) throws Exception{
   
  Document doc = DocumentHelper.parseText(xml);
    Element el = ((Document) doc).getRootElement();
    Map map = new HashMap();
    if(el != null) {
     List<Element> jiedians = el.elements();
     for(int j=0;j<jiedians.size();j++) {
      Element url  = jiedians.get(j);
      System.out.println("Name : "+url.getName()+" Value : "+url.getTextTrim());
      map.put(url.getName(),url.getTextTrim());
      if("uainfo".equals(url.getName().trim())){
       List<Element> accounts1  = url.elements();
       for(int t=0;t<accounts1.size();t++) {
        Element acc  = accounts1.get(t);
        System.out.println(acc.getName()+"  and  "+acc.getTextTrim());
        map.put(acc.getName(),acc.getTextTrim());
       }
      }
      if("svccont".equals(url.getName().trim())) {
       List<Element> accounts  = url.elements();
       for(int i=0;i<accounts.size();i++) {
        Element acc  = accounts.get(i);
        System.out.println(acc.getName()+"  and  "+acc.getTextTrim());
        map.put(acc.getName(),acc.getTextTrim());
       }
      }
     }
    }
    System.out.println(map);

   
  return map;
  
 }
 
 
 
 public  String  createXML(UserInfo user){
  Document document = DocumentHelper.createDocument();
        Element usersElement = document.addElement("ecity");
       // usersElement.addAttribute("operate", "aa");     //添加根节点的属性
        Element ele1 = usersElement.addElement("msgName");
        ele1.addText("userRegisterResp");
        Element ele2 = usersElement.addElement("msgversion");
        ele2.addText("1.0");
        Element ele3 = usersElement.addElement("transactionID");
        ele3.addText("admin");
        Element ele4 = usersElement.addElement("result");
       
        ele4.addElement("RspCode").addText("0");
        ele4.addElement("RspDesc").addText("");
        Element ele5 = usersElement.addElement("SvcCont");
        ele5.addElement("userid").addText(user.getUserid());
        ele5.addElement("password").addText(user.getPassword());
  return document.asXML();
  
 }
 
 public  String  createXMLInfo(Map map){
  Set entries = map.entrySet( );
  Document document = DocumentHelper.createDocument();
  if(entries != null) {
   Iterator iterator = entries.iterator( );
   while(iterator.hasNext( )) {
   Map.Entry entry =(Entry) iterator.next( );
   Object key = entry.getKey( ).toString();
   Object value = entry.getValue().toString();
//    Element usersElement = document.addElement("ecity");
    Element ele1 = document.addElement((String) key);  
          ele1.addText((String) value);
   }
  }      
  return document.asXML();
  
 }
 
 
 
 public static void main(String[] args) throws Exception {
//  String xml="<ecity><msgname>userregisterreq</msgname>"+
//  "<msgversion>1.0</msgversion><transactionid>1</transactionid><uainfo><ua>nokian97</ua></uainfo>" +
//  "<userid></userid><userid></userid><msgsender>mmclient</msgsender>" +
//  "<svccont><regid>13912345678</regid><regtype>0</regtype></svccont></ecity>";
//  Map  u=new BuildXml().parseXML(xml);
  Map map=new HashMap();
   map.put("token", "token");
  String Mapu=new BuildXml().createXMLInfo(map);
  System.out.println(Mapu);
  
 }

}

原创粉丝点击