Java JAXB元素的多内容

Java JAXB元素的多内容,java,xml,jaxb,dtd,Java,Xml,Jaxb,Dtd,我目前正在做一个txt到xml的项目。基本上,我所做的是为一些内容创建不同的XmlElements。 我已经启动并运行了一个DTD,现在我正在创建一个默认xml,只是为了确保创建的每个xml都是有效的xml(对于给定的DTD)。 我主要是为每个元素创建新的类,这些元素没有#PCDATA结构,到目前为止工作得很好。 现在我正与一个问题作斗争: 我在DTD中获得了以下信息: <!ELEMENT REACTION(#PCDATA | ACTOR*)> 对于所有其他节点,例如RootNod

我目前正在做一个txt到xml的项目。基本上,我所做的是为一些内容创建不同的XmlElements。 我已经启动并运行了一个DTD,现在我正在创建一个默认xml,只是为了确保创建的每个xml都是有效的xml(对于给定的DTD)。 我主要是为每个元素创建新的类,这些元素没有#PCDATA结构,到目前为止工作得很好。 现在我正与一个问题作斗争: 我在DTD中获得了以下信息:

<!ELEMENT REACTION(#PCDATA | ACTOR*)>
对于所有其他节点,例如RootNode,我创建了一个RootNodeClass,它包含不同的属性,例如m_nLocation、m_nTime、m_nYear,这些属性被声明为XML元素,因此JAXB封送员仅基于这些元素构建XML:

<ROOT>
 <TIME>09:00</TIME>
 <LOCATION>New York</TIME>
 <YEAR>1992</YEAR>
</ROOT>

09:00
纽约
1992
我想对反应节点做同样的事情(如上所述),但是当创建一个新的类反应时,我得到了如下结果:

<REACTION>
  <TEXT>Prof. X clapped!</TEXT>
  <ACTOR>Prof. X</ACTOR>
</REACTION>

X教授鼓掌了!
X教授
我如何将它们放在一个元素中,但仍然保留如上所述的标记? 如果有人知道如何处理这个问题,我将非常感激


谢谢Max首先,你最需要的是。您可能会有如下结构:

@XmlMixed
@XmlElementRefs({
    @XmlElementRef(name="ACTOR", type=JAXBElement.class),
    ...})
List<Object> content;
@xmlmix
@XmlElementRefs({
@XmlElementRef(name=“ACTOR”,type=JAXBElement.class),
...})
列出内容;
有了它,您可以将
String
s和
JAXBElement
放在那里,以实现所谓的混合内容

接下来,您可以考虑首先将DTD转换为XML模式并编译它,或者使用XJC.

编译DTD。 最后,您拥有的是所谓的“半结构化数据”,我认为它不太适合JAXB。JAXB对于强大而清晰的结构非常有用,但是如果你有混合的东西,你会得到很难使用的奇怪的模型。不过,我不能提出替代方案

<REACTION>
  <TEXT>Prof. X clapped!</TEXT>
  <ACTOR>Prof. X</ACTOR>
</REACTION>
@XmlMixed
@XmlElementRefs({
    @XmlElementRef(name="ACTOR", type=JAXBElement.class),
    ...})
List<Object> content;