在 JAXB 中,如何将节点值设置为字符串字段的属性值?
In JAXB, How can I set node value to attribute value for a string field?
我需要将这种特定类型的 xml 消息发送到网络服务;
<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".
的属性字段创建名称和姓氏 类,我找不到合适的方法来执行此操作
如果您需要以下格式。
<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 ;
}
我找到了 jaxb 的 moxy 实现作为解决方案。它提供了提供默认属性键的能力。
关于使用 moxy 作为默认 jaxb 实现的回答:Use Moxy as default JAXB Implementation
@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>
我需要将这种特定类型的 xml 消息发送到网络服务;
<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".
的属性字段创建名称和姓氏 类,我找不到合适的方法来执行此操作如果您需要以下格式。
<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 ;
}
我找到了 jaxb 的 moxy 实现作为解决方案。它提供了提供默认属性键的能力。
关于使用 moxy 作为默认 jaxb 实现的回答:Use Moxy as default JAXB Implementation
@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>