zuishengmengsi1990 2013-05-02 09:22 采纳率: 0%
浏览 240
已采纳

关于jaxb的问题

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

dfd
111
234
sdd

想用jaxb实现java对象和xml的转换,xml的格式如上,在定义pojo类时可以定义一个Resulst类其中包括code、msg属性,一个service类,然后包括result、cash、commission、orderNo属性。。不过现在是想把result作为service的属性定义成String类型,不去单独定义类,该如何实现这种转换??求指导。。

  • 写回答

3条回答 默认 最新

  • Dead_Knight 2013-05-02 10:16
    关注

    首先,你这个思想就违背了jaxb的意愿。既然你不想定义result这个类,那你service中的属性都可以不用定义了,直接使用XmlJavaTypeAdapter这样大的注解去marshal、unmarshal对象xml就行了。一般使用jaxb,如果属性为某个类库中定义的类,而需要转换为xml时,通过XmlJavaTypeAdapter来进行特殊处理。如插件开发中,元素属性为:org.eclipse.draw2d.geometry.Rectangle(矩形)时,通过XmlJavaTypeAdapter转换,如下所示:
    [code="java"]
    import javax.xml.bind.annotation.adapters.XmlAdapter;

    import org.eclipse.draw2d.geometry.Rectangle;

    public class LayoutXmlAdapter extends XmlAdapter
    {
    @Override
    public String marshal(Rectangle v) throws Exception
    {
    if(v == null) return "";
    return v.x + "," + v.y + "," + v.width + "," + v.height;
    }

    @Override
    public 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);
    }
    

    }
    [/code]

    如果你非要不定义result类,直接转换为:
    dfd
    那你可以使用XmlJavaTypeAdapter注解。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题