java如何在JAXB中将单个标记映射到多个字段
有可能在JAXB中实现以下功能吗
msg.txt
<Message>
<abc>Hello World</abc>
<cdf>Dummy</cdf>
</Message>
@XmlRootElement(name="message")
class Message{
public String abc;
public String cdf;
}
class Test{
public static void main(String args[]){
JAXBContext jc = JAXBContext.newInstance();
Unmarshaller u = jc.createUnmarshaller();
Message m = (Message) u.unmarshal(new File("C:/msg.txt"));
}
}
现在,我想用abc='Hello World'和cdf='Hello'填充消息对象。也就是abc字段的子字符串
我尝试对cdf字段使用XMLJavaAdapter,但在Adapter类的unmarshal方法中,我只能获得字符串dummy作为ValueType,即cdf字段的值
这在JAXB中可能吗
# 1 楼答案
您可以映射
abc
,然后将cdf
标记为@XmlTransient
(以防止它作为unmarshal
的一部分填充)然后,在解组完成后,可以利用解组事件填充
cdf
字段。以下是两种不同方法的链接:对演示代码的更正
在创建
JAXBContext
时,需要包括Message
类:此外,还需要确保在
@XmlRootElement
注释中指定的名称与XML文档中的根元素名称匹配。目前,您的案例与这些案例不匹配