1

我正在使用 JAXB MOXy 将我的 java 对象映射到 XML。到目前为止,我只需要一次转换 1 个对象并且这个词很好。所以我的输出 XML 看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<NotificationTemplateXML template-id="1">
   <template-subject>Test Subject</template-subject>
   <template-text>Test Text</template-text>
</NotificationTemplateXML>

我现在要做的是将对象的多次迭代保存到同一个 XML 文件中,所以它看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
 <NotificationTemplateXML template-id="1">
    <template-subject>Test Subject</template-subject>
    <template-text>Test Text</template-text>
 </NotificationTemplateXML>
 <NotificationTemplateXML template-id="2">
    <template-subject>Test Subject</template-subject>
    <template-text>Test Text</template-text>
 </NotificationTemplateXML>
 <NotificationTemplateXML template-id="3">
    <template-subject>Test Subject</template-subject>
    <template-text>Test Text</template-text>
 </NotificationTemplateXML>

我的对象映射如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="NotificationTemplateXML")
public class NotificationTemplate {

    @XmlAttribute(name="template-id")
    private String templateId;
    @XmlElement(name="template-subject")
    private String templateSubject;
    @XmlElement(name="template-text")
    private String templateText;

假设我有一个类型为“NotificationTemplate”的列表,我可以简单地编组列表吗?这是否会生成一个带有每个 NotificationTemplate 对象的单个 xml 文件作为单独的“XML 对象”?

注意。同样,当我解组 XML 文件时,我是否希望生成类型“NotificationTemplate”的列表?

4

1 回答 1

1

下面是几个不同的选项。

选项 #1 - 处理无效的 XML 文档

XML 文档只有一个根元素,因此您的输入无效。以下是@npe给出的关于如何处理此类输入的答案:

选项 #2 - 创建有效的 XML 文档

我建议将您的 XML 转换为有效的文档并进行处理。

带有根元素的 XML 文档

我通过添加根元素修改了您的 XML 文档。

<?xml version="1.0" encoding="UTF-8"?>
<NotificationTemplateXMLList>
    <NotificationTemplateXML template-id="1">
        <template-subject>Test Subject</template-subject>
        <template-text>Test Text</template-text>
     </NotificationTemplateXML>
     <NotificationTemplateXML template-id="2">
        <template-subject>Test Subject</template-subject>
        <template-text>Test Text</template-text>
     </NotificationTemplateXML>
     <NotificationTemplateXML template-id="3">
        <template-subject>Test Subject</template-subject>
        <template-text>Test Text</template-text>
     </NotificationTemplateXML>
<NotificationTemplateXMLList>

NotificationTemplateXMLList

我已经为您的域模型引入了一个新类,该类映射到新的根元素。

@XmlRootElement(name="NotificationTemplateXMLList")
@XmlAccessorType(XmlAccessType.FIELD)
public class NotificationTemplates {

     @XmlElement(name="NotificationTemplateXML")
     private List<NotificationTemplate>  notificationTemplates;
}
于 2012-07-03T10:43:08.993 回答