为了账号安全,请及时绑定邮箱和手机立即绑定

在 JAXB 中,如何将节点值设置为字符串字段的属性值?

在 JAXB 中,如何将节点值设置为字符串字段的属性值?

千万里不及你 2023-07-28 09:41:53
我需要将这种特定类型的 xml 消息发送到 Web 服务;<Personel>    <name value="HelpMe"/>    <surname value="Please"/></Personel>我的代码是这样的;@XmlRootElement(name = "Personel")@XmlAccessorType(XmlAccessType.FIELD)public class Personel{    @XmlElement(name = "name")    String name;    @XmlElement(name = "surname")    String surname;}但这段代码生成的 xml 类似;<Personel>    <name>HelpMe<name/>    <surname>Please<surname/></Personel>如果不创建具有名为“value”的属性字段的名称和姓氏类,我找不到正确的方法来执行此操作。
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

我发现 jaxb 的 moxy 实现作为解决方案。它提供了给出默认属性键的能力。


@XmlRootElement(name = "Personel")

@XmlAccessorType(XmlAccessType.FIELD)

public class Personel{


    @XmlPath("name/@value")

    String name;


    @XmlPath("surname/@value")

    String surname;

}

所以上面的代码根据我的需要生成了以下 xml,


<Personel>

    <name value="HelpMe"/>

    <surname value="Please"/>

</Personel>


查看完整回答
反对 回复 2023-07-28
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

如果您需要以下格式。


<Personel>

    <name value="HelpMe"/>

    <surname value="Please"/>

</Personel>

创建 PersonelName 和 PersonelSurname,然后将这些类用作 Personel 类中的 XmlElement。


@XmlAccessorType(XmlAccessType.FIELD)

public class PerosonelName {


   @XmlValue

    String value;


    @XmlElement(name = "name")

    String name;


}


@XmlAccessorType(XmlAccessType.FIELD)

public class PersonelSurname {


   @XmlValue

    String value;


    @XmlElement(name = "surname")

    String surname;


}



@XmlRootElement(name = "Personel")

@XmlAccessorType(XmlAccessType.FIELD)

public class Personel{


    @XmlElement(name = "name")

    String PerosonelName ;


    @XmlElement(name = "surname")

    String PersonelSurname ;

}


查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 146 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信