0

当在 XSD 中将 complexType 标记为 mixed="true" 时,生成的 Java 类会生成一个 List,该 List 具有“String”类型或围绕实际值的 JAXBElement 包装器。如果没有 mixed="true",则不会生成 JAXBElement,并且值会直接映射到类型类。例如:

    <xs:complexType name="div" mixed="true">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="a" minOccurs="0" maxOccurs="unbounded" type="anchorType"/>
     </xs:sequence>
     ...
   </complexType>

这里的 div 类型将包含一个 List getContent() 方法,该方法为 AnchorType 返回一个字符串或一个 JAXBElement。

我希望它只返回没有 JAXBElement 的 String 或 AnchorType。

4

1 回答 1

0

考虑这个包含 div 标签和一些子标签的 XML:

<parentTag>
  <div>myPlainTextValue<a/><a/></div>
</parentTag>

但 XML 文档中的混合内容不一定出现在单个块中。根据 XSD,此 XML 也是有效的:

<parentTag>
  <div>my<a/>Plain<a/>Text<a/>Value</div>
</parentTag>

在这两种情况下,标签“div”的文本内容都是“myPlainTextValue”。但在第二个示例中,它分布在子标签之间的 4 个较小的块中。JAXB 需要生成可以处理一般情况的代码,所以我不希望它为您的情况提供特殊模式。

于 2020-08-31T22:35:21.643 回答