我使用标准的JAXB API来处理XML。我需要编组,然后解组一个对象(所以结果应该是同一个对象)。我首先编入一个字符串,然后做相反的事情 - 从字符串解组成一个对象。仅限JAXB XML编组对象,但解组需要完整结构?
问题是Marshaller.marshal(obj,os)给我的子只有(以XML包含)。当我尝试解组时,我会收到有关缺少预期的父代码的错误。
E.g. (1)整理String对象 “FieldSet中”:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FIELD1>field1</FIELD1>
<FIELD2>field2</FIELD2>
(2)尝试这个XML字符串解组成 “FieldSet中” 对象:
javax.xml.bind.UnmarshalException:标签名称“FIELD1”是不允许的。可能的标记名称为: - 链接的例外: [com.sun.msv.verifier.ValidityViolation:标记名称“FIELD1”不允许。可能的标记名称为:“Parent”]
在架构中,“Parent”是应位于“FieldSet”之前的顶级元素。
为什么这些标准JAXB操作不是对称的,我需要做些什么来同步它们并避免仅子女/缺少父母问题?谢谢。
我无权访问JAXB类,它们是自动生成的。我只使用对象。我应该注释我的实例吗? – 2012-01-18 16:12:44
@geneb如果你不想注释你的实例,你可以使用'JAXBElement'方法。 – 2012-01-18 16:15:00
当我尝试用JAXBElement封装对象时,发生以下异常: javax.xml.bind.MarshalException:marshal()的对象参数不可编组 – 2012-01-18 16:27:58