解析 创建 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);
}
}
- DOM4J 解析xml,创建xml
- python解析xml(创建xml)
- Dom4j创建XML,解析XML
- [XML]Dom创建,解析xml
- 创建和解析XML
- xml解析与创建
- xml解析与创建
- 解析 创建 xml
- java创建解析XML
- 创建 和解析xml
- dom 创建 解析 xml
- dom4j 创建,解析xml
- xml解析 创建
- DOM解析XML 创建XML JSON解析 创建JSON
- minixml创建与解析XML
- Dom4j创建和解析XML
- PHP创建与解析XML
- Dom方式创建/解析xml
- Spring集成Quartz定时任务框架介绍
- 遭遇MySQL server has gone away
- PAC文件详解
- ERROR 1005 (HY000) at line 1679: Can't create table 'db_name.table_name' (errno: 708)
- 已掌握的eclipse快捷键
- 解析 创建 xml
- IT人怎么赶走不快乐的心情?
- ERROR 1005 (HY000) at line 3706: Can't create table 'db_name.table_name' (errno: 136)
- 初次接触mule
- 随机生成验证码
- mac 完全卸载mysql
- 19 推荐一款连汤都不剩的家常烧鱼方法!
- poj_1088_滑雪
- Android OTA 升级(三):生成recovery.img