关于jaxb的问题

问题描述

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><service><result code="333"msg="sdfasfsa">dfd</result><cash>111</cash><commission>234</commission><orderNO>sdd</orderNO></service>想用jaxb实现java对象和xml的转换,xml的格式如上,在定义pojo类时可以定义一个Resulst类其中包括code、msg属性,一个service类,然后包括result、cash、commission、orderNo属性。。不过现在是想把result作为service的属性定义成String类型,不去单独定义类,该如何实现这种转换??求指导。。

解决方案

首先,你这个思想就违背了jaxb的意愿。既然你不想定义result这个类,那你service中的属性都可以不用定义了,直接使用XmlJavaTypeAdapter这样大的注解去marshal、unmarshal对象xml就行了。一般使用jaxb,如果属性为某个类库中定义的类,而需要转换为xml时,通过XmlJavaTypeAdapter来进行特殊处理。如插件开发中,元素属性为:org.eclipse.draw2d.geometry.Rectangle(矩形)时,通过XmlJavaTypeAdapter转换,如下所示:import javax.xml.bind.annotation.adapters.XmlAdapter;import org.eclipse.draw2d.geometry.Rectangle;public class LayoutXmlAdapter extends XmlAdapter<String, Rectangle>{@Overridepublic String marshal(Rectangle v) throws Exception {if(v == null) return "";return v.x + "," + v.y + "," + v.width + "," + v.height;}@Overridepublic Rectangle unmarshal(String v) throws Exception{if(v != null && v.trim().length() > 0){String[] ps = v.split(",");if(ps.length ==4){int x = Integer.parseInt(ps[0]);int y = Integer.parseInt(ps[1]);int width = Integer.parseInt(ps[2]);int height = Integer.parseInt(ps[3]);return new Rectangle(x, y, width, height);}}return new Rectangle(0, 0, 0, 0);}}如果你非要不定义result类,直接转换为:<result code="333"msg="sdfasfsa">dfd</result>那你可以使用XmlJavaTypeAdapter注解。
解决方案二:
result本身有两个属性,code和msg。如果result变成String型,打算怎么处理这两个属性呢?1.用String数组? [code, msg]这样2.分成service两个String类型属性。 resultCode resultMsg3.拼成一个String,定长或分隔符比如逗号。 分隔符时还得保证Msg里面别有分隔符无论如何,单单从已知的信息来说,有个类好些吧。不要类,可以用个Map替换。
解决方案三:
是要在不修改XML的前提下,修改Bean的结构吗?这样做好像有点违背java对象和xml相互对应转换的原则。可以把result这个bean留着,在service类的setResult(Result result)方法中,做一些处理,比如把result中的code、msg和自己的值set给service实例的变量就行了,然后把getResult()方法改成返回String类型的result的值。service类的两个方法:public String getResult() { return this.resultStr;}public void setResult(Result result) { this.resultStr = result.getResultValue(); //这就是result节点的文本值:dfd this.code = result.getCode(); this.msg = result.getMsg();}

时间: 2024-09-08 00:34:48

关于jaxb的问题的相关文章

JAXB Sample

1. Schema文件: <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.liulutu.com/students/" targetNamespace="http://www.liulutu.com/students/"

Java中的XML: 数据绑定,第 1 部分:代码生成方法 — JAXB 及其它

数据绑定 提供了一种简单而直接的方法,以在 Java 平台应用程序中使用 XML.有了数据绑定,应用程序可以在很大程度上忽略 XML 文档的实际结构,而 直接使用那些文档的数据内容.虽然这种方法不能适合于所有应用程序,但在一 般情况下,对于那些将 XML 用于数据交换的应用程序是比较理想的. 除了简化编程之外,数据绑定还提供了其它一些好处.由于数据绑定对许多文 档细节进行了抽象,因此对于在内存中处理文档,它通常所需要的内存比文档模 型方法(譬如 DOM 或 JDOM)要少.您还会发现,由于不需要

使用CBE和JAXB集成实现对WAS上应用程序的业务数据监控

当今企业提倡的是随需而变,因此需要在尽可能短的时间分析元数据来响应这些变化的巨大挑战.此 外,如何提前预知企业应用中的潜在问题,如客户注册量.订单量的浮动等等,都对企业制定计划至关重 要,因此我们需要对元数据进行及时的收集分析. EJB3 作为当前的主流技术之一,提供了一系列的技术 点来支持开发人员更好的操作 JavaBean,使得对 JavaBean 的控制更加简单,同时,JAXB 提供了对 JavaBean 与 XML 之间的相互转换. 如我们所知,所有在 WebSphere Applica

通过Web服务API和JAXB编组与WebSphere Process Server交互

简介 除了传统的 Enterprise JavaBeans (EJB) 接口之外,最近增加了 Java Messaging Service (JMS) API.REST 接口和 Web 服务 API.comparison of the programming interfaces for interacting with business processes and human tasks 讨论了这些 API 的优点和缺点. Web 服务 API 是在 WebSphere Process Ser

使用JAXB框架定制Web服务行为

Web 服务 Web 服务概述 从本质上来讲 Web 服务就是对外暴露的并能够通过 Web 进行调用的一组 API,它并不要求服务提供方及调用方的技术实现.编程语言.运行平台甚至操作系统等.也正因为这个特点 Web 服务能在企业应用集成领域迅速占领一席之地,并成为实施应用程序集成的首选手段之一,同时 Web 服务也是面向服务架构的重要实现手段. 深入剖析 Web 服务我们不难发现在这个简单定义的背后有若干问题需要解决:Web 服务提供程序如何描述自己才能为调用程序所理解:调用程序如何发现可用的

数据绑定之JAXB

JAXB(Java Architecture for XML Binding)提供了一个快速而方便的方式 绑定XML Schemas和java,使java程序员能够很方便的在java应用程序中处理XML 数据.JAXB提供了将XML文档解组为java内容树的方法,以及将java内容树重新 编组回XML文档的方法.JAXB同样也提供了一种从java对象生成XML Schema的方 式. 这里有几个重要的定义: 编组(Marshalling)是把内存中的数据转化到存储媒介上的过程.因此在 Java

JAXB vs XStream

这两东东本质上是有差别的,JAXB称为OX binding工具,XStream应该算序列化工具,但 OX binding工具也会marshall和unmarshall,所以包含了序列化这一部分.序列化工具不一 定需要提供binding的功能.既然都玩序列化,那就简单地比较一下它们两在序列化方面的强 弱吧. JAXB:Toplink JAXB 10133,应该是JAXB 1.1标准 (取消了schema的validation功能) XStream:1.3.1 数据长度: 类型 长度 内容 XStr

使用JAXB来实现Java程序配置的简单方法

程序的自定义设置是一个重要的功能,大多数程序都会提供自定义配置的方法,提供用户根据个人喜好.运行环境来配置软件的使用方式.程序的配置方式存在多样性,一般会采用windows格式的ini配置文件或者注册表方式,java格式的properties属性文件,随着xml文件在程序开放中的普及,也有越来越多的配置开始使用xml的文件方式,例如java EE中的部署描述文件. 我们知道,在java中存在很多xml的处理方式,xml组织的dom.sax方法,apache以及sun官方都提供的众多的实现,也有很

在WEBLOGIC SERVER 10中使用JAX-WS和JAXB

JAX-WS(Java Architecture for Web Services)是JAX-RPC的后续版本.它是一种基于标准的API,可用于编写.汇编和部署Java Web services.JAXB(Java Architecture for XML Binding)是一种Java/XML绑定技术.JAX-WS将使用JAXB处理所有的Java绑定操作. 本文将简要介绍BEA WebLogic Server 10.1中所支持的JAX-WS 2.0和JAXB 2.0.读者可通过文章中的示例代码

[CXF REST标准实战系列] 一、JAXB xml与javaBean的转换

文章Points: 1.不认识到犯错,然后得到永久的教训. 2.认识JAXB 3.代码实战   1.不认识到犯错,然后得到永久的教训.   也不是所谓的教训吧,真正的教训来自于对错误的剖析理解很深刻.然后有种"吃一堑,长一智"的感觉才叫教训.近日和团队工头们用CXF3.0和Spring4.0开发一个平台,模仿着第三方支付,用xml进行数据交互.   因此,搜了下.果断用了dom4j,用自己键盘papa打了个叫做XmlOjbUtil的工具类.后来百度下,虽然不是万能的百度.但也要表扬下,