我有以下代码,
JAXBContext jc = JAXBContext.newInstance(TestResults.class);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
OutputStream os = new FileOutputStream( "nosferatu.xml" );
TestResults tr = new TestResults();
tr.setUuid(new JAXBElement<String>(new QName("uuid"),String.class, "uuidcontent"));
//ObjectFactory objectFactory = new ObjectFactory();
m.marshal(new JAXBElement<TestResults>(new QName("uri","local"),TestResults.class,new TestResults()), System.out);
我试图将 Java String Class 包装为jaxb element
,因为如果我不这样做的话
unable to marshal type “java.lang.String”
错误。
但是当我尝试将java.lang.string
包裹在jaxb element
中时,我收到以下错误
The method setUuid(String) in the type TestResults is not applicable for the arguments (JAXBElement<String>)
setUuid
方法如下所示
public void setUuid(java.lang.String value) {
this.uuid = value;
}
如何将String
包裹为jaxb element
,而不会抛出此错误?
答案 0 :(得分:1)
当作为根对象编组时,需要将String
的实例包装在JAXBElement
中以提供根元素信息(与没有@XmlRootElement
注释的任何类相同。 / p>
当作为字段或属性值编组时,包含元素通常从包含字段/属性派生,因此默认情况下不需要JAXBElement
。