Java 使用JAXB,如何避免混合complexType的JAXBElement

Java 使用JAXB,如何避免混合complexType的JAXBElement,java,xsd,jaxb,jaxb2-maven-plugin,jaxb2-basics,Java,Xsd,Jaxb,Jaxb2 Maven Plugin,Jaxb2 Basics,当complexType在XSD中标记为mixed=“true”时,生成的Java类将生成一个列表,其中包含“String”类型或实际值周围的JAXBElement包装。如果没有mixed=“true”,则不会生成JAXBElement,并且该值直接映射到类型类。例如: <xs:complexType name="div" mixed="true"> <xs:sequence minOccurs="0&q

当complexType在XSD中标记为mixed=“true”时,生成的Java类将生成一个列表,其中包含“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


我希望它只返回String或AnchorType,而不返回JAXBElement。

考虑一下包含div标记和一些子标记的XML:


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


myPlainTextValue

在这两种情况下,标记'div'的文本内容都是'myPlainTextValue'。但在第二个示例中,它分布在子标记之间的4个较小的块中。JAXB需要生成能够处理一般情况的代码,因此我不希望它对您的情况有特殊的模式。

为什么不从“div”的类型定义中删除“mixed=true”?我需要能够放入纯文本和元素,类似于HTML div元素