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

JAXB XmlElement maxOccurs数组元素问题

方绪
2023-03-14
<xsd:element name="testArrayInt" type="xsd:int"/>

当我从注释中删除type=integer.class时,我开始在XML中得到maxOccurs=“unbounded”。

@XmlElement(required=true):

<xsd:element name="testArrayInt" type="xsd:int" maxOccurs="unbounded"/>

但我需要这种类型特别用于基元数据类型。如果注释中没有类型,则不需要的元素(即未设置required=true)缺少minOccurs=1。

有人能帮我吗?

共有1个答案

穆浩皛
2023-03-14

注意:我是EclipseLink JAXB(MOXy)的负责人,也是JAXB(JSR-222)专家组的成员。

您描述的问题似乎出现在EclipseLink JAXB(MOXy)中,而不是JAXB参考实现中。MOXy是WebLogic 12.1.1中的默认JAXB提供程序(请参见:http://blog.bdoughan.com/2011/12/eclipselink-moxy-is-jaxb-provider-in.html)。您可以使用以下bug跟踪我们在此问题上的进展。如果您是WebLogic客户,请输入一个bug,以便您可以收到适当的补丁程序。

    null
package forum13646211;

import javax.xml.bind.annotation.XmlElement;

public class Root {

    private int[] testArrayInt;

    @XmlElement(type=Integer.class)
    public int [] getTestArrayInt () {
        return testArrayInt;
    }

    public void setTestArrayInt(int[] array) {
        this.testArrayInt = array;
    }

}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:complexType name="root">
    <xs:sequence>
      <xs:element name="testArrayInt" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <xsd:complexType name="root">
      <xsd:sequence>
         <xsd:element name="testArrayInt" type="xsd:int" minOccurs="0"/>
      </xsd:sequence>
   </xsd:complexType>
</xsd:schema>
package forum13646211;

import java.io.IOException;
import javax.xml.bind.*;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);

        jc.generateSchema(new SchemaOutputResolver() {

            @Override
            public Result createOutput(String namespaceUri,
                    String suggestedFileName) throws IOException {
                StreamResult result = new StreamResult(System.out);
                result.setSystemId(suggestedFileName);
                return result;
            }

        });

    }

}
 类似资料:
  • 根据所提供的函数对每个元素进行迭代,将这些元素分成两个数组。 使用 Array.reduce() 创建两个数组的数组。 使用 Array.push() 将 fn 返回为 true 的元素添加到第一个数组,而 fn 返回 false 的元素到第二个元素。 const partition = (arr, fn) => arr.reduce( (acc, val, i, arr) => {

  • 问题内容: 我是python的新手,我想了解如何处理数组的元素。例如,如果我有: 我已经在python中定义了它们,例如: 我看到我无法参考,但是给了我一个结果。所以,我不明白如何访问这些数组的第二行?那会是吗?为了将它们乘以等,我将如何做? 问题答案: 如果你有 然后 将正常工作。就像您想要的那样,它指向第二列,第二行。 我不确定您做错了什么。 要乘以第三列中的单元格,您可以执行以下操作 它将适

  • 我有一个问题: 我有一个列表Java,我填充了不同的值。例如,我有: 我也有其他价值观。现在,我想在这个列表中只搜索第一个字段。例如,我想要A的indexOf。我尝试过写这段代码: 但我得到-1作为回报。我想知道在加载数组时如何访问列表中的字段。

  • 问题内容: 给定下面的数组,我想知道是否有一种简单的方法可以将此数组转换为仅具有唯一值的数组? 给出: 将其变成这样的结果数组,保留原始顺序: 问题答案: 在Java 8中,用于获取数组的唯一元素 最简单的方法是从数组创建集合。 然后您可以使用以下方法检索数组: 如果要维护订单,请使用 LinkedHashSet; 如果要对订单进行排序,请使用 TreeSet 。

  • 我有办法转移arr元素: 当我执行这段代码时,我遇到了一个异常: 据我所知,程序需要更多的空间来包含另一个项目。但是我不需要添加更多的项目,我需要已经存在的移动。用参数,如果参数为负,所有数组向左移动,如果为正向右移动,如果为零-什么都不会发生。

  • 它建议使用以下机制访问2D数组ARR[5][5]的第I第行的第J第元素: 根据我对指针的粗略了解,我知道数组的名称产生第0行的第0元素的地址,数组的任何整数增量都将产生下一行的基地址。我想在这个节骨眼之前一切都很好。 添加间接运算符是否会导致它产生该行的第I个元素,而不是第I个行的基元素的地址? 下面不应该是访问第I第行的第J第元素的代码吗? 在前面提到的情况下,增加arr i次将导致代码片段指向