Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理元素&;使用jaxb生成POJO时在xsd中具有相同名称的属性?_Java_Xsd_Jaxb - Fatal编程技术网

Java 如何处理元素&;使用jaxb生成POJO时在xsd中具有相同名称的属性?

Java 如何处理元素&;使用jaxb生成POJO时在xsd中具有相同名称的属性?,java,xsd,jaxb,Java,Xsd,Jaxb,我有一个xsd,它包含如下内容: <xs:complexType> <xs:sequence minOccurs="0"> <xs:element ref="HereIsTheProblem"/> <xs:element ref="blaBla"/> </xs:sequence> <xs:attribute name="something" type="xs:string" use="required"

我有一个xsd,它包含如下内容:

<xs:complexType>
  <xs:sequence minOccurs="0">
    <xs:element ref="HereIsTheProblem"/>
    <xs:element ref="blaBla"/>
  </xs:sequence>
  <xs:attribute name="something" type="xs:string" use="required">
    <xs:annotation/>
  </xs:attribute>
  <xs:attribute name="somethingElse" type="xs:string">
    <xs:annotation/>
  </xs:attribute>
  <xs:attribute name="HereIsTheProblem" type="xs:string">
    <xs:annotation/>
  </xs:attribute>
</xs:complexType>
如何在不修改模式的情况下解决此问题


PS:我的jaxb版本是2.1.13

您需要使用一个绑定文件来指示jaxb应该如何处理这个名称冲突。例如,将类似这样的内容放入名为bindings.xjb的文件中:

<jaxb:bindings version="2.1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:com.fnf="http://www.fnf.com/xes">
  <jaxb:bindings schemaLocation="your schema location here" node="/xs:schema">
    <jaxb:bindings node="//XPath selector">
      <jaxb:property name="HereIsTheProblem2" />
    </jaxb:bindings>
  </jaxb:bindings>
</jaxb:bindings>


如果没有完整的模式,就无法为您提供完整的解决方案

是否还需要为所有其他内容指定绑定?或者只有jaxb处理rest时的冲突,请澄清。否,只有冲突是必需的。您也可以自由修改其余部分,但这不是必需的。基本上,对于阻止jaxb生成有效类的所有内容,都必须使用绑定。绑定的目的是消除相同的名称。非常感谢,我将从明天开始研究它,希望不会有进一步的问题。嗯,从未处理过这个案例,但我猜应该采取类似的方法,即,找到其中一个歧义元素的XPath选择器,并表示另一个名称绑定,以便JaxB可以继续。有关更多信息,请尝试通过谷歌搜索错误并查看JAXB绑定文档。
<jaxb:bindings version="2.1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:com.fnf="http://www.fnf.com/xes">
  <jaxb:bindings schemaLocation="your schema location here" node="/xs:schema">
    <jaxb:bindings node="//XPath selector">
      <jaxb:property name="HereIsTheProblem2" />
    </jaxb:bindings>
  </jaxb:bindings>
</jaxb:bindings>