我有一个元素定义为xsd:double.如果我尝试将一个值285放入元素然后我编组它我得到285.0的输出……那很好.但是,如果我输入一个值285292746,我得到2.85292746E8的输出我是元帅.

我喜欢这样的东西,以便双输出不会转换为带小数的科学记数法?基本上我想要285292746或2852292746.0000000

java.lang.Double.toString()对某些为xml生成isues的值使用“computerized scientific notation”.

我知道给定值的双重表示很好.但是值是指数格式的事实,我正在处理的系统是接受我的XML但不知道如何处理指数值并导致我的程序无法正常工作.在WSDL或服务器中更改xsd:double类型对我来说是不可行的.我在客户端工作.

我遇到了Jaxb:绑定xsd:double类型.我仍然很难解决问题,以非扩展格式发送值double值.

package com.logger.client

import javax.xml.bind.annotation.adapters.XmlAdapter;

import javax.xml.bind.DatatypeConverter;

public class JaxbDoubleSerializer extends XmlAdapter

{

public Double unmarshal(String value) {

return ((double)javax.xml.bind.DatatypeConverter.parseDouble(value));

}

public String marshal(Double value) {

if (value == null) {

return null;

}

return (javax.xml.bind.DatatypeConverter.printDouble((double)(double)value));

}

}

我需要帮助如何使用DoubleSerializer,以便我可以传递没有指数的值.我尝试在我的类MyLogClient.java中使用xmlAdapter Annotation.我需要知道如何解决这种情况.

package com.logger.client

import javax.xml.ws.BindingProvider;

import javax.xml.bind.JAXBElement;import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

import javax.xml.bind.annotation.XmlValue;

public class MyLogClient

{

//Private member fields

/** Object factory used to create user-and-role specific objects. */

private static final ObjectFactory _of = new ObjectFactory();

@XmlJavaTypeAdapter(JaxbDoubleSerializer.class)

public JAXBElement msgFileId;

@XmlJavaTypeAdapter(JaxbDoubleSerializer.class)

public Double dNumber;

public final void createEntry;

(

final String userName,

final String time,

final String logMsgStringId,

final Params logMsgParamsVal,

final Integer logMessageFieldID

)

throws JAXBException

{

JAXBElement username = _of.createParamsParam(userName);

JAXBElement strTime = _of.createLogRequestTime(time);

// Build the LogRequest request.

final LogRequest _LogRequest = _of.createLogRequest();

_LogRequest.setUserName(userName);

_LogRequest.setTime(strTime);

//Following is the main problem

int nMsgArgs = 285292746;

dNumber = Double.parseDouble(Integer.toString(nMsgArgs));

//After parsing double Value I get dNumber is now 2.85292746E8

//MsgFile Id is of Type JAXBElement

//CreateLogMessageIdentifier takes Double param

//So the main problem is here..the value of double field in soap request

//is being sent in exponential format. I need to send as I explained above

//285292746.

msgFileId = _of.createLogMessageIdentifier(dNumber);

JAXBElement strIdVal = _of.createLogMessageFileId(logMsgStringId);

final LogMessage logMessage = _of.createLogMessage();

JAXBElement _logMsgParams =_of.createLogMessageParams(logMsgParamsVal);

//Following is where I am trying to use marshall for double type.

JAXBContext context = JAXBContext.newInstance("package com.logger.client ");

context.createMarshaller().marshal(msgFileId, System.out);

logMessage.setIdentifier(msgFileId); //Method takes JAXBElement

logMessage.setFileId(strIdVal );

logMessage.setParams(_logMsgParams);

JAXBElement logMsgValue = _of.createLogRequestLogMessage(logMessage);

_LogRequest.setLogMessage(logMsgValue);

// Set the log entry

port.log(_LogRequest); //Request is sent to server.

}

WSDL xsd:类型声明如下: –

标识符字段的输出是: –

2.85292746E8

Whereas I want to send as. Because system does accept/recognize following types.

285292746

or

285292746.00000000

java xmladapte_java – Jaxb:全局绑定使用XMLAdapter进行双...相关推荐

  1. JAXB自定义绑定– Java.util.Date / Spring 3序列化

    JaxB可以处理Java.util.Date序列化,但是需要以下格式: " yyyy-MM-ddTHH:mm:ss ". 如果需要将日期对象格式化为另一种格式怎么办? 我有同样的问 ...

  2. JOGL - Java与OpenGl的绑定(转)

    JOGL - Java与OpenGl的绑定 默认分类 2009-11-22 20:31:05 阅读4 评论0 字号:大中小 在这篇文章里,摘录了<学习Java对于OpenGl的绑定>.作者 ...

  3. cassandra 数据到Java对象的映射绑定

    类似Hibernate和MyBatis的关系映射,自动帮你将查询数据或是修改的参数进行数据映射和绑定. 支持查询后返回数据ResultSet到Java对象的映射,支持修改.删除.查询之前参数的绑定. ...

  4. Java自定义异常、全局捕获异常、拦截器 实现动态控制登录超时

    Java自定义异常.全局捕获异常.拦截器 实现动态控制登录超时 参考文章: (1)Java自定义异常.全局捕获异常.拦截器 实现动态控制登录超时 (2)https://www.cnblogs.com/ ...

  5. java对opengl绑定_你好,JOGL - Java与OpenGl的绑定-Java频道-中国IT实验室

    然后出现了JOGL 也许是最流行的真正的面向对象的编程语言.有许多用去结合OpenGL的尝试,但是第一个被大家认可并注意的是Java对于OpenGl的绑定(Java Bindings for Open ...

  6. java实现app微信绑定功能

    在 Java 中实现微信绑定功能,需要使用微信开放平台提供的相关接口和 SDK. 首先,你需要在微信开放平台上注册开发者帐号,并创建应用.然后,你需要在应用中获取 AppID 和 AppSecret, ...

  7. java 全局数组_如何在Java中声明全局数组?

    我有一个程序在Java中乘以两个矩阵.我在全局错误声明中发现了一些错误. 这里是我的代码如何在Java中声明全局数组? import java.util.Scanner; /**WAP in Java ...

  8. java定焦点_测温型热成像双光谱球机

    产品说明 双光球型云台热像仪(小)集高稳定性红外热像仪.高清可见光网络摄像机.智能云台于一体,可对有多个待测目标或多个待测区域的仓库.料坑.机房等规模性场所进行实时双光监控.先进的红外热像仪可在完全漆 ...

  9. JAXB: XML绑定的Java体系结构

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 用于XML绑定的Java体系结构(JAXB)是一种软件框架,它允许Java开发人员将Java 类映射 ...

最新文章

  1. mybatis以及预编译如何防止SQL注入
  2. 当周期信号的频率趋向无穷时,它将消失
  3. Python3-join()和split()的用法
  4. Bash 中的特殊字符大全
  5. execl用宏查询mysql_关于EXCEL能否用宏直接连到oracle数据库然后取数据
  6. Flutter插件开发《Podspec语法整理》
  7. 使用Popup窗口创建无限级Web页菜单(7)
  8. 七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...
  9. vue.js 常见面试题_使用Vue.js时应避免的常见错误
  10. 裴蜀(贝祖)定理及其证明
  11. lwip路由实现_TCP控制块《LwIP协议栈源码详解——TCP/IP协议的实现》
  12. 绿色IT实施必要性 数字可不会撒谎
  13. matplotlib命令与格式:系统字体与显示中文
  14. HAPI使用方法总结(HITRAN数据库,HITEMP数据库)
  15. zabbix告警列队清理
  16. java curl 使用方法_如何在Java中使用这个cURL POST请求?(Spotify API)
  17. checking whether we are cross compiling... configure: error: in `/tmp/pip-build-rktAki/pycrypto解决方法
  18. python计算召回率_Pytorch 计算误判率,计算准确率,计算召回率的例子
  19. ubuntu安装解压版mysql数据库
  20. CC00055.LinuxNetwork——|LinuxApache.V05|

热门文章

  1. MFC日志(2011.4.9)
  2. 取得浏览器当前鼠标的X,Y坐标的JavaScript脚本及document元素的一些重要属性
  3. 手机照片×××作:千里走单骑
  4. 最真挚的祝福最深的伤
  5. python中浅拷贝和深度拷贝的区别
  6. Andorid视觉新冲击-Material design语言
  7. CentOS 6.5 Nginx 配置
  8. linux diff详解
  9. linux下安装 Sublime Text 3
  10. C/C++指针 引用