使用XJC(JAXB的)从XML模式定义生成Java类时出现问题

使用XJC(JAXB的)从XML模式定义生成Java类时出现问题,java,xml,jaxb,Java,Xml,Jaxb,我有一个看起来像这样的XML和一个相应的xsd <books> <book name="book1" id="book1"> <name>Harry Potter</name> ........... </book> ........... </books> 哈利·波特 ........... ........... 请注意,“name”出现了两次,一次作为标记中的属性,另一次作为标记下的元素。

我有一个看起来像这样的XML和一个相应的xsd

<books>
  <book name="book1" id="book1">
    <name>Harry Potter</name>
  ...........
  </book>
  ...........
</books>

哈利·波特
...........
...........
请注意,“name”出现了两次,一次作为标记中的属性,另一次作为标记下的元素。显然,这是无效的语法,我不确定

当我尝试使用(JAXB的)xjc命令为此生成java类时,它会比较xsd文件中的无效重复项

但是,我能够在VS2008中使用xsd命令为xsd生成C#类

我有三个问题

  • XML语法错了吗

  • 为什么xjc(JAXB的)报告错误,而xsd(VS2008的)不报告错误

  • 有没有办法让xjc(JAXB的)生成类(而不必修改XML/XSD文件)

  • 我不想改变XML/XSD文件,因为它是20000行文件。但这是我最后的选择

  • 模式没有错,但设计得很糟糕。为属性和子元素使用相同的名称是令人困惑的,尽管这是合法的
  • 因为它们是为不同语言生成代码的不同工具
  • XJC可以使用“绑定定制”,这允许您影响它如何生成代码。这包括更改任何给定模式元素的生成java名称的能力。这一点记录在(见第5章,特别是第5.3节)

  • @ChanLFC-请参阅-b comand线路开关,了解skaffman提到的绑定定制。