Java JAXB EclipseLink Moxy添加模板xml
我的jaxb EclipseLink实现有问题 假设我有以下实体Java JAXB EclipseLink Moxy添加模板xml,java,templates,jaxb,eclipselink,Java,Templates,Jaxb,Eclipselink,我的jaxb EclipseLink实现有问题 假设我有以下实体 @XmlRootElement(name = GenericConfigEntity.XML_ROOT_TAG) public class GenericConfigEntity { private String name; private String data; private String version; private String date; private String te
@XmlRootElement(name = GenericConfigEntity.XML_ROOT_TAG)
public class GenericConfigEntity {
private String name;
private String data;
private String version;
private String date;
private String template;
@XmlAttribute(name = GenericConfigEntity.XML_NAME)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = GenericConfigEntity.XML_DATA)
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@XmlAttribute(name = GenericConfigEntity.XML_VERSION)
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@XmlAttribute(name = GenericConfigEntity.XML_DATE)
public String getDate() {
return date;
}
public String getTemplate() {
return template;
}
public void setTemplate(String template) {
this.template = template;
}
}
字符串“template”已经包含了xml数据,比如说类似这样的数据(在我的真实上下文中,它包含的数据要多得多,我不想为此创建实体)
现在我的问题是,是否有一种方法可以将模板字符串集成到生成类似这样内容的编组过程中
<conf name="xx" version="x" datum="xx">
<Prozess name="xx" test="1">
<Debug system="test" />
</Prozess>
<Data>
TextTextText
</Data>
</conf>
文本文本文本
将模板包装在标记中不是解决方案,因为我仅限于此布局
另外,@XmlValue也不是解决方案,因为我遇到了一个异常“所有其他元素都必须是属性,因为其中一个元素被标记为XmlValue”。我自己还没有使用过它,但我认为您可以将
@xmlanyement
与DomHandler
结合使用来实现这样的映射。你可以在MOXy首席程序员的博客上找到一个有用的例子
我认为您仍然必须确保模板字段中的XML内容至少有一个开始和结束标记,用于在(取消)编组期间标识DOM元素。根据您的要求,该标记可能是任意的。我想您可以查找字符串中出现的第一个标记,并尝试将其与字符串的末尾匹配
<conf name="xx" version="x" datum="xx">
<Prozess name="xx" test="1">
<Debug system="test" />
</Prozess>
<Data>
TextTextText
</Data>
</conf>