首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAXB编组对象,但是解编组需要完整的结构吗?

JAXB编组对象,但是解编组需要完整的结构吗?
EN

Stack Overflow用户
提问于 2012-01-18 15:59:19
回答 1查看 2.9K关注 0票数 1

我正在使用标准的JAXB来处理XML。我需要封送,然后不封送一个对象(所以结果应该是相同的对象)。我首先将其封送成字符串,然后执行相反的操作--将字符串解封为对象。

问题是,Marshaller.marshal(obj,os)给我的是子级(包含在XML中)。当我试图反封送回封送时,会发现有关丢失的父标记的错误。

例如(1)为对象“FieldSet”封送字符串:

代码语言:javascript
复制
<?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“是不允许的。可能的标签名是:“父”

在模式中,“父”是应该放在"FieldSet“前面的顶级元素。

为什么这些标准的JAXB操作是不对称的,我需要做什么来同步它们并避免子/丢失的父操作?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-01-18 16:09:10

要提供根元素信息,可以执行以下操作之一:

1-注释您要用@XmlRootElement注释的类

代码语言:javascript
复制
@XmlRootElement
public class FieldSet {
}

2-用JAXBElement实例包装正在编组的对象

代码语言:javascript
复制
QName qName = new QName("root");
JAXBElement<FieldSet> jaxbElement = new JAXBElement<FieldSet>(qName, FieldSet.class, fieldSet);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8913241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档