当前位置: 首页 > 知识库问答 >
问题:

用JAXB解组Number类型的元素

白哲茂
2023-03-14

你好,我正在使用JAXB将XML解锁到JAVA,我的xml文档中有一个元素“值”,可以是int类型,也可以是双精度型,并且我的java类中此元素的相应属性是数字类型的“值”。

JAXB不支持“数字”类型的umarshaling,我想,有人知道如何处理这个问题吗?一个例子将会得到真正的赞赏。提前谢谢。

共有1个答案

诸葛砚文
2023-03-14

写入适配器,例如:

import java.math.BigDecimal;
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class NumberAdapter extends XmlAdapter<String, Number> {

    @Override
    public Number unmarshal(String v) throws Exception {
        return new BigDecimal(v);
    }

    @Override
    public String marshal(Number v) throws Exception {
        return v.toString();
    }

}

并与变量声明一起使用:

@XmlJavaTypeAdapter(NumberAdapter.class)
private Number myNumber;
 类似资料:
  • 下面是这篇经常被引用的博客文章中关于使用xsi:type的说明: http://blog.bdoughan.com/2010/11/jaxb-and-inheritance-using-xsitype.html 基本上我有这个: 这个测试: 我得到了这个结果: 我尝试了JAXB的默认实现,JAXB-impl-2.1.2,并基于此缺陷,尝试了JAXB-impl-2.2.6-b38。罐子这些都不管用。

  • 我正在尝试使用JAXB从遗留系统中解压XML文档。我的xml结构如下所示:

  • 背景: 我使用JAXB将XML解组为Java对象。最初,我只是使用JAXB来执行解组。然后对代码进行静态分析,并提出了XML外部实体注入的高关键性问题。经过一点研究,我发现了一个建议(https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet#JAXB_Unmarshaller)使用配置为防止解析

  • 为什么在使用JAXB时需要使用? 我的工作场景是这样的: 我正在做一个从.NET到Java的转换项目。在.NET中,类的编写与POJO类似。我只是在代码中添加了注释(如、等)。并解决了与注释相关的错误。 现在我犯了这样的错误: XML文件如下: POJO类:

  • 本文向大家介绍JS求Number类型数组中最大元素方法,包括了JS求Number类型数组中最大元素方法的使用技巧和注意事项,需要的朋友参考一下 如何使用JS,在一个Number类型的数组里,查找最大(或最小)数呢? 以下介绍四个方法。 1. 不使用任何库函数 代码如下: 解释: 利用一个变量result来存储最大值。遍历待查找的数组,如果当前遍历的元素大于result,就把这个元素赋值给resul

  • 我有这种结构的xml文件: 有没有可能将这种XML解组到一个对象中。问题是每个元素都有一些独特的标签。我想把这些值放到列表中,但是我不知道怎么做。