猿问

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

我需要将这种特定类型的 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”的属性字段的名称和姓氏类,我找不到正确的方法来执行此操作。


千万里不及你
浏览 147回答 2
2回答

POPMUISE

我发现 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>

翻翻过去那场雪

如果您需要以下格式。<Personel>&nbsp; &nbsp; <name value="HelpMe"/>&nbsp; &nbsp; <surname value="Please"/></Personel>创建 PersonelName 和 PersonelSurname,然后将这些类用作 Personel 类中的 XmlElement。@XmlAccessorType(XmlAccessType.FIELD)public class PerosonelName {&nbsp; &nbsp;@XmlValue&nbsp; &nbsp; String value;&nbsp; &nbsp; @XmlElement(name = "name")&nbsp; &nbsp; String name;}@XmlAccessorType(XmlAccessType.FIELD)public class PersonelSurname {&nbsp; &nbsp;@XmlValue&nbsp; &nbsp; String value;&nbsp; &nbsp; @XmlElement(name = "surname")&nbsp; &nbsp; String surname;}@XmlRootElement(name = "Personel")@XmlAccessorType(XmlAccessType.FIELD)public class Personel{&nbsp; &nbsp; @XmlElement(name = "name")&nbsp; &nbsp; String PerosonelName ;&nbsp; &nbsp; @XmlElement(name = "surname")&nbsp; &nbsp; String PersonelSurname ;}
随时随地看视频慕课网APP

相关分类

Java
我要回答