2009-08-13 73 views
2

我有一个看起来像这样的XML和一个对应的xsd。使用XJC(JAXB)从XML模式定义生成Java类的问题

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

请看“name”出现两次,一次作为标记中的一个属性,另一个作为标记下的元素。显然这是无效的语法,我不知道。

当我尝试使用xjc命令(JAXB)为此生成java类时,它会关于xsd文件中的无效重复条目。

但是,我能够产生VS 2008

使用XSD,XSD命令C#类我有三个问题。

  1. 这是XML语法错误吗?

  2. 为什么xjc(JAXB的)报告错误而VS2008的xsd不?

  3. 有什么办法可以让xjc(的JAXB)生成类(没有我必须改变XML/XSD文件)?

我不想改变XML/XSD文件,因为它是20,000行文件。但这对我来说是最后的选择。

回答

3
  1. 该模式没有错,但设计不佳。虽然它是合法的,但为属性和子元素使用相同的名称是令人困惑的。
  2. 因为它们是为不同语言生成代码的不同工具。
  3. XJC可以使用“绑定自定义”,它允许您影响它如何生成代码。这包括为任何给定的模式元素更改生成的java名称的能力。这在JAXB tutorial(参见第5章,特别是5.3)中有记录
+0

@ChanLFC - 请参阅-b命令行开关以使用绑定自定义skaffman提及。 – McDowell 2009-08-13 10:28:10