首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UnMarshalling期间将Jaxb属性值转换为大写

在UnMarshalling期间将Jaxb属性值转换为大写
EN

Stack Overflow用户
提问于 2016-10-18 14:30:56
回答 1查看 967关注 0票数 0

我想将uid属性值在MyJaxbModel类中转换为大写的UnMarshalling。我确实写了UpperCaseAdapter,为我做工作。但是,使用这种方法,应用程序性能会下降到不可接受的水平(因为有数千个XML文件被解封到MyJaxbModel)。我不能在getter /setter中使用/setter,因为这些JAXB模型是由XSD自动生成的,我不想对它们进行调整。

代码语言:javascript
复制
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "myJaxbModel")
public class MyJaxbModel
{
    protected String name;

    @XmlJavaTypeAdapter(UpperCaseAdapter.class)
    protected String uid;

    // getters and setters

}

public class UpperCaseAdapter extends XmlAdapter<String, String>
{
    @Override
    public String unmarshal( String value ) throws Exception
    {
        return value.toUpperCase();
    }

    @Override
    public String marshal( String value ) throws Exception
    {
        return value;
    }
}

<!--My XSD makes use of below xjc:javaType definition to auto-configure this-->
<xsd:simpleType name="uidType">
    <xsd:annotation>
        <xsd:appinfo>
            <xjc:javaType name="java.lang.String"
                adapter="jaxb.UpperCaseAdapter" />
        </xsd:appinfo>
    </xsd:annotation>
    <xsd:restriction base="xsd:string" />
</xsd:simpleType>

期望输入<myJaxbModel name="abc" uid="xyz" />

预期输出myJaxbModel.toString() -> MyJaxbModel[name=abc, uid=XYZ]

是否有更好的办法来取得预期的结果?

EN

回答 1

Stack Overflow用户

发布于 2016-10-18 14:41:39

为什么不直接将其解析为getUid()中的大写或设置时的大写?

代码语言:javascript
复制
if (uid != null){
   return uid.toUpperCase();
}
...

代码语言:javascript
复制
 ...
    if (uid != null){
       this.uir =  uid.toUpperCase();
    }

我认为这是最简单、最干净的方法.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40111036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档