2

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

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

请注意,“名称”出现了两次,一次是标签中的属性,另一次是标签下的元素。显然这是无效的语法,我不确定。

当我尝试使用 xjc 命令(JAXB)为此生成 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 行文件。但这对我来说是最后的选择。

4

1 回答 1

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