2

このような XML とそれに対応する xsd があります。

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

'name' がタグの属性として 1 回、タグの下の要素として 2 回表示されていることを確認してください。どうやらそれは無効な構文です。よくわかりません。

(JAXB の) xjc コマンドを使用してこのための Java クラスを生成しようとすると、xsd ファイルの無効な重複エントリについて説明されます。

しかし、VS 2008 で xsd コマンドを使用して xsd 用の C# クラスを生成できます。

3 つの質問があります。

  1. その XML 構文は間違っていますか?

  2. xsd (VS2008) がエラーを報告しないのに、(JAXB の) xjc がエラーを報告するのはなぜですか?

  3. (XML/XSD ファイルを変更することなく) クラスを生成するために (JAXB の) xjc を取得する方法はありますか?

20,000 行のファイルなので、XML/XSD ファイルを変更したくありません。しかし、それは私にとって最後の選択肢です。

4

1 に答える 1

3
  1. スキーマは間違っていませんが、設計が不十分です。属性と子要素に同じ名前を使用することは合法ですが、混乱を招きます。
  2. それらは異なる言語のコードを生成する異なるツールだからです。
  3. XJCは、コードの生成方法に影響を与えることができる「バインディングのカスタマイズ」を利用できます。これには、特定のスキーマ要素に対して生成されたJava名を変更する機能が含まれます。これは、JAXBチュートリアルに記載されています(第5章、具体的には5.3を参照)。
于 2009-08-13T09:34:21.450 に答える