微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用JAXB,如何避免将JAXBElement用于混合complexType

如何解决使用JAXB,如何避免将JAXBElement用于混合complexType

当在XSD中用complex =“ true”标记complexType时,生成java类生成一个列表,该列表具有围绕实际值的“字符串”类型或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的String或JAXBElement。

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

解决方法

考虑以下XML,其中包含div标签和一些子标签:

df1 <- structure(list(S1 = c(NA,NA,1L,2L,NA),S2 = c(NA,3L,S3 = c(NA,3L),S4 = c(NA,5L,4L,S5 = c(NA,7L,NA)),class = "data.frame",row.names = c("1","2","3","4","5","6","7"))

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

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

在两种情况下,标记“ div”的文本内容均为“ myPlainTextValue”。但是在第二个示例中,它以4个较小的块分布在子标记之间。 JAXB需要生成可以处理 general 案例的代码,因此我不希望它具有适合您案例的特殊模式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。