符号已定义。 使用JAXB属性来解决冲突

我有一个xsd文件(yahoo.xsd),我导入另一个xsd文件,如下所示:

  

stock.xsd看起来像这样:

              

当我使用xjc进行编译时,我收到以下错误消息:

[错误]属性“符号”已定义。 使用解决此冲突。

我基本上在SO上找到了这个解决方案( JAXB编译问题 – [错误]属性“任何”已经定义 )但是我无法让它工作。 我猜我的XPath是错的。

这是我正在使用的绑定文件:

        

如果我现在正在使用xjc -b进行编译,则表示XPath评估会导致空目标节点。

我可能要重命名Symbol定义,然后重命名? 怎么自动这样做?

让我问一下这句话:

  

是在yahoo.xsd中定义的符号还是在同一个xsd文件中的本地?

我会尝试推断出一些事实。

我假设你有两个XSD: yahoo.xsdsome.xsd (你的post中的第一个)。 我有很强的信心“符号”类型在some.xsd定义,而不是在yahoo.xsdyahoo.xsd 。 如果是这样,我会期待一些名称空间前缀(“雅虎:符号”?)。

现在,你的some.xsd看起来是这样的:

                       

如果我说的是真的,那么你的jaxb绑定应该如下所示:

         

而生成的java类将是:

 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "symbolAttribute" }) @XmlRootElement(name = "quote") public class Quote { @XmlElement(name = "Symbol") protected int symbolAttribute; @XmlAttribute(name = "symbol", required = true) @XmlJavaTypeAdapter(CollapsedStringAdapter.class) @XmlSchemaType(name = "NCName") protected String symbol; ....