【问题标题】:Problem in generating Java classes from XML schema definition using XJC(of JAXB)使用 XJC(of JAXB) 从 XML 模式定义生成 Java 类的问题
【发布时间】:2009-08-13 03:30:31
【问题描述】:

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

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

请注意,'name' 出现了两次,一次作为标签中的属性,一次作为标签下的元素。显然这是无效的语法,我不确定。

当我尝试使用(JAXB 的)xjc 命令为此生成 java 类时,它对 xsd 文件中的无效重复条目进行了比较。

但是,我可以在 VS 2008 中使用 xsd 命令为 xsd 生成 C# 类。

我有三个问题。

  1. XML 语法错了吗?

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

  3. 有什么方法可以让 xjc(of JAXB) 生成类(无需我更改 XML/XSD 文件)?

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

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:
    1. 架构没有错,但设计得很糟糕。对属性和子元素使用相同的名称会造成混淆,尽管这是合法的。
    2. 因为它们是为不同语言生成代码的不同工具。
    3. XJC 可以使用“绑定自定义”,您可以影响它生成代码的方式。这包括为任何给定模式元素更改生成的 java 名称的能力。这在JAXB tutorial 中有记录(参见第 5 章,特别是 5.3)

    【讨论】:

    • @ChanLFC - 请参阅 -b 命令行开关以使用 skaffman 提到的绑定自定义。
    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2021-10-12
    • 2012-11-13
    相关资源
    最近更新 更多