我正在使用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'的列表,我可以简单地编组列表吗?是否会生成一个单独的xml文件,每个NotificationTemplate对象都作为一个单独的“XML对象”?
NB。同样,当我解组XML文件时,我希望生成Type'NotificationTemplate'列表?
答案 0 :(得分: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;
}