我有一个元素定义为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. 逗号分隔的字符串转换为Python中的列表 split
  2. boost::edmonds_karp_max_flow用法的测试程序
  3. es6 日期字符串转日期_【R语言新书】1.4 数据结构Ⅲ:字符串、日期时间
  4. python excel xlwings_python excel神器xlwings
  5. 红旗linux培训文档,Linux基本应用培训-红旗Linux.ppt
  6. kylin启动:Failed to create /kylin
  7. 动态规划法求最大字段和时间复杂度_面试必备——手撕代码(1)“最大子序列和”...
  8. BZOJ3420: Poi2013 Triumphal arch
  9. 荧光染料Alexa Fluor 647 carboxylic acid/COOH/羧基羧酸
  10. 微信h5缓存清理技巧
  11. 数据可视化 六种基本图标
  12. JAVA考试多选题判断得分
  13. springboot集成rabbitmq,根据查询的信息创建多个消息中心和消息队列,并实现不同的消息发送到不同的消息中心
  14. 计算机如何安装程序,怎么禁止电脑安装任何软件?禁止计算机安装程序的方法(图文)...
  15. P7560-[JOISC 2021 Day1]フードコート【吉司机线段树】
  16. 从毕业到2010的Java程序员生涯(一)
  17. 【ICCV2019 论文列表】出炉论文持续更新
  18. 图纸格式dwg批转pdf如何操作
  19. 2018网易游戏开发面试题(经验)锦集
  20. 《Advice on how to read papers》---吴恩达CS230随堂笔记

热门文章

  1. C#实现AES加密和解密
  2. CVS/SVN/GIT
  3. Android PdfViewer
  4. mengento 数据库模型
  5. MVC中用 BundleCollection 压缩CSS时图片路径问题
  6. Eclipse插件安装出现Duplicate location错误
  7. 软考信息系统项目管理师_历年真题_2020下半年错题集_上午综合知识题---软考高级之信息系统项目管理师036
  8. C++_逻辑运算符_非_与_或---C++语言工作笔记015
  9. JAVA高并发服务器工作笔记0001---Java中InetAddress与InetSocketAddress的基本用法
  10. Netty工作笔记0020---Selectionkey在NIO体系