webservice 中根据xml 片段,反转xsd 文件,生成java 对象
来源:互联网 发布:java棕色rgb 编辑:程序博客网 时间:2024/06/04 16:36
在webservice 中,响应值有xml, json 等 形式, 当返回值 为xml 片段,但是又没有对方的xsd 文件和sdk 时,这是就需要我们程序员来手动解析返回的xml 片段了, 如果是几十行的xml 片段,我们使用dom4j 或sax 等xml 解析框架就行了,如果面对 几万行的返回值,那么手动解析 就必然是一件费时费力的工作 ,而且出错率还比较高。那么,自动将xml 解析成java对象的操作,将是我们程序员所希望看到的。
1. xml 反转出 xsd 文件:
1.1 下载xmlspy 软件, 用xmlspy 软件打开 xml 文件
1.2 检查xml 是否是格式良好的软件
1.3 反转xsd 文件
1.3 . 打开xsd 文件,可能需要 进行简单的修改 ,将xs:byte 类型修改为 xs:int 类型 或者 xs:string 类型
2. xsd -> java : 根据xsd 转换成java 对象, jdk1.7 自带 xjc 命令,可以根据xjc 命令直接转换成 java 对象
命令格式: xjc -d dir -p packgeName -verbose xxx.xsd
3. 解析 xml ->java 对象 : jdk 自带解析工具类:
import java.io.StringReader;import java.io.StringWriter;import javax.xml.bind.JAXBContext;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller; public class JaxbBinder { public static String convertToXml(Object obj) { return convertToXml(obj, "UTF-8"); } /** * JavaBean转换为xml * @param obj * @param encoding * @return */ public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext context = JAXBContext.newInstance(obj.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding); StringWriter writer = new StringWriter(); marshaller.marshal(obj, writer); result = writer.toString(); } catch (Exception e) { e.printStackTrace(); } return result; } @SuppressWarnings("unchecked") public static <T> T converyToJavaBean(String xml, Class<T> c) { T t = null; try { JAXBContext context = JAXBContext.newInstance(c); Unmarshaller unmarshaller = context.createUnmarshaller(); t = (T) unmarshaller.unmarshal(new StringReader(xml)); } catch (Exception e) { e.printStackTrace(); } return t; } }
注意:在xml 转换成xsd 的过程中,可能会有一些命名空间的问题, 这就需要手动修改 xsd 文件, 可以删除命名空间, 然后再反转, 这样的话 ,当你进行webservice 请求时,获取到的返回字符串时,也得将返回字符串中的命名空间 replace 掉,这样才能正常将xml 片段转换成 java 对象
- webservice 中根据xml 片段,反转xsd 文件,生成java 对象
- eclipse根据XSD文件生成JAVA文件
- 根据xsd文件生成java类
- 根据xsd生成xml文档
- 根据xsd生成xml文档
- 根据XML自动生成XSD
- 根据xml生成xsd,然后根据xsd生成javabean
- 根据xml生成xsd,根据xsd生成bean
- [XML]JAVA解析XSD,并根据选择节点生成XSL
- 用jaxb通过XSD生成Java类,java对象转换成xml文件
- xsd 生成java 对象
- 根据XML生成XML schema(*.xsd)
- jaxb根据*.xsd文件生成相应的java类
- 使用JAXB eclipse插件根据XSD文件生成JAVA代码
- 微软XSD工具根据XSD文件生成的C#类中多余Specified属性问题
- schema.xsd生成java文件
- XML文件生成XSD文件的方法
- java根据model生成xml文件
- 学习MFC框架如何创建的过程
- Android学习文档之秘密发送短信
- 【iOS】Objective-C与JavaScript的交互
- 4G手机制式
- CheckBox定制勾选框
- webservice 中根据xml 片段,反转xsd 文件,生成java 对象
- Spring中配置数据源的4种形式
- 电子电路设计之工控设备抗干扰总结(单片机电路及PCB设计注意)
- yum update错误Transaction Check Error解决方式
- android-自定义Dialog
- Linux下添加新硬盘,分区及挂载
- DSYM结合友盟错误日志联调bug分析错误
- matlab 图片批量读取
- hdu 2871 -Memory Control--线段树