当前位置: 首页 > 知识库问答 >
问题:

使用JAXB,我们如何避免混合复杂类型的JAXBElement

尹昂雄
2023-03-14

在XSD中,当complexType标记为mixed=“true”时,生成的Java类将生成一个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的String或JAXBElement。

我想让它返回没有JAXBElement的String或AnchorType。

共有1个答案

徐凌
2023-03-14

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

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

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

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

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

 类似资料:
  • 问题内容: 我有一个深层的XML结构,其中包含许多没有意义的包装程序,我将它们映射到一个Java类。使用@XmlPath映射简单的数据类型是在公园里散步,但是当涉及到实际上需要自己的类的类型时,我不太确定该怎么做,尤其是当这些类型也应该放在列表中时。 我在将以下示例中的所有类型映射到我的类时遇到问题。由于包装器驻留在使用I 映射的资源中,因此我不能使用,否则我通常会这样做。 示例XML结构 根ja

  • 我有一个很深的XML结构,它有很多无意义的包装器,我要映射到一个Java类。用@xmlpath映射简单的数据类型是一种尝试,但当涉及到实际上需要自己的类的类型时,我不太确定该如何做,特别是当这些类型也应该放在列表中时。 XML结构示例 root.java RefObj.java 更新 在发布了前面的示例之后,我意识到它实际上是按照预期工作的,这让我更加困惑。尽管我试图在生产代码中复制(以前的)工作

  • 我有一个由第三方供应商提供的XSD文件。我需要解析该XSD文件并生成Java对象。我使用JAXB通过maven插件解析XSD文件。 一切都很顺利,直到我最近要求使用来自正在解析的XML中的一个标记的数据。标记的complexType具有mixed=true,因此JAXB生成的java类如下所示。 XSD复杂类型: 生成的JAXB类 GeneralRemark>类不包含List ,而是包含List

  • 我最近开始将样式化组件与React一起使用,我不确定我是否正确地处理了一个不断重复出现的特定情况。 假设我有一个非常简单的组件,比如,它只需要非常多的样式和一些给定的内容。我现在要处理的事情如下: 我发现首先定义基本组件,如,只针对样式,然后再定义另一个组件,它接受道具并使用该样式组件。 有没有更短的方法只在一个组件中完成这两个任务?我希望能有一些像... ...但那似乎不起作用。

  • 我有下一个示例代码: 你可以看到id是JSON格式中的一个重复字段,我知道PostgreSQL有一些功能可以避免这个问题,但我找不到。

  • 问题内容: 我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。 按索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。 每个数据框都是90列,所以我试图避免用手将所有内容写出来。 如果我做: 我懂了 谢谢!… 问题答案: 您可以算出仅在一个DataFrame中的列,并使用它来选择合并中列的子集。 然后执行合并(