Object与xml之间相互转换.doc_第1页
Object与xml之间相互转换.doc_第2页
Object与xml之间相互转换.doc_第3页
Object与xml之间相互转换.doc_第4页
Object与xml之间相互转换.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Object与xml格式字符串相互转换的几种方法我们在做有关webservice时,通常会传递xml格式的参或接受xml格式的返回值,这就会涉及到Object对象与xml格式字符串之间的相互转换问题,下面介绍相互转换的几种方式及其示例代码。一、Object转xml格式字符串。利用java反射机制实现,根据参数传递方式不同,有以下两种方式/ 定义文件头信息private static final String TITLE = ;private static final String TITLE_GBK = ;private static final String ROOT_START = ;private static final String ROOT_END = ;1.传递参数为List,List中存放实体类,即Model/* * java反射方式,将List转换为xml文件(List中存放的对象为实体类) * * param list * return */public static String getObjectToXml(List list) StringBuffer stringBuffer = new StringBuffer();stringBuffer.append(TITLE);stringBuffer.append(ROOT_START);/ 循环遍历listfor (int i = 0; i list.size(); i+) Object object = list.get(i);stringBuffer.append();/ 取得实体类中的每个元素Field fields = object.getClass().getDeclaredFields();/ 遍历所有元素for (int j = 0; j fields.length; j+) try String name = fieldsj.getName();/ 拼接get方法名Method method = object.getClass().getMethod(get + name.substring(0, 1).toUpperCase()+ name.substring(1), new Class );/ 利用反射机制,取得对应的数据Object result = method.invoke(object, new Object );stringBuffer.append();stringBuffer.append(result);stringBuffer.append(); catch (Exception e) e.getStackTrace();stringBuffer.append();stringBuffer.append(ROOT_END);return stringBuffer.toString();示例代码中的Object对象是实际应用中,自定义的实体类,即Model。2.传递参数为List,List中存放Map示例代码如下:/* * 将List转换为xml文件(List中存放的对象为Map) Map的key值必须是字符串类型,不能为数字;key是数字时会报错 * * param list * return */public static String getMapObjectToXml(List list) StringBuffer stringBuffer = new StringBuffer();stringBuffer.append(TITLE);stringBuffer.append(ROOT_START);/ 遍历Listfor (int i = 0; i list.size(); i+) Map map = list.get(i);stringBuffer.append();Iterator it = map.keySet().iterator();while (it.hasNext() try Object key = it.next();stringBuffer.append();stringBuffer.append(map.get(key);stringBuffer.append(); catch (Exception e) e.getStackTrace();stringBuffer.append();stringBuffer.append(ROOT_END);return stringBuffer.toString();二、xml格式字符串转Object。根据参数传递方式不同,有以下两种方式1.返回List对象(List中包含map),key值是参数args中的字段名示例代码如下:/* * 重载方法,分析xml字符串,返回List对象(List中包含map),key值是参数args中的字段名 * * param str * param obj * param args * return */public static List getXmlValue(String str, Object obj, String args) List list = new ArrayList();/ 解析结果SAXBuilder builder = new SAXBuilder(false);try System.out.println(str);Document doc = builder.build(new StringReader(str);Element root = doc.getRootElement();List col = root.getChildren(obj.getClass().getSimpleName();System.out.println(col.size() + 列);for (int i = 0; i col.size(); i+) Map result = new HashMap();Element c = (Element) col.get(i);/ 列System.out.println(列: + i);List val = c.getChildren();for (int j = 0; j val.size(); j+) Element v = (Element) val.get(j);result.put(argsj, v.getText();/ 指定列的值 添加到这行中System.out.println(值: + v.getText();list.add(result); catch (Exception e) e.printStackTrace();return list;2.返回List对象(List中包含map),key值是下标对应的字符串示例代码如下:/* * 重载方法,分析xml字符串,返回List对象(List中包含map),key值是下标对应的字符串 * * param str * param obj * return */public static List getXmlValue(String str, Object obj) List list = new ArrayList();/ 解析结果SAXBuilder builder = new SAXBuilder(false);try System.out.println(str);Document doc = builder.build(new StringReader(str);Element root = doc.getRootElement();List col = root.getChildren(obj.getClass().getSimpleName();System.out.println(col.size() + 列);for (int i = 0; i col.size(); i+) Map result = new HashMap();Element c = (Element) col.get(i);/ 列System.out.println(列: + i);List val = c.getChildren();for (int j = 0; j val.size(); j+) Element v =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论