0

XSD スキーマと同じ名前空間プレフィックスを作成するように JAXB を強制する方法があるかどうか疑問に思っています。つまり、xmlns:cts="http://cts.com" を含むスキーマから JAXB クラスを作成しても、クラスをマーシャリングした後、xmlns:ns1 プレフィックスを持つ XML を取得します。NamespacePrefixMapper クラスを使用してこれらをオーバーライドできることは承知していますが、XSD がデフォルトのプレフィックスを明確に定義しているのに、なぜこれを手動で行う必要があるのでしょうか? 現在の XML には大量のプレフィックスがあるため、パッケージ レベルの宣言またはクラス アノテーションを手動で変更することも、最初の xjc 生成後に大幅なやり直しになります。数十のルート要素とともに、10 以上の XSD インポートと 5000 以上の要素を持つ基本 XSD を扱っています。

エンドポイント システムは制御できないため、適切な XML 処理の実装がないため、XML でどのプレフィックスが使用されるかを気にする必要があります。

これに対するショートカットはありますか?すべての入力に感謝します。

よろしく、Gökhan

4

1 に答える 1

2

最も簡単な近道は、XML のプロデューサーとコンシューマーが標準の XML 処理ツールを使用することです。あなたの状況ではそれはうまくいかないとあなたは言います。

つまり、データ コンシューマーが既存の既製の XML ツールの使い方を学習する労力を負担しないようにするために、正しい XML だけでなく、追加の任意の要件を満たす正しい XML を生成する労力が発生することになります。ほとんどの XML ソフトウェアが隠蔽するように設計されている抽象化レベルでのアドホックな制約。彼らが非常に良い顧客である場合、それは価値があるかもしれません.

具体的には、(1) JaxB で生成されたクラスに加えたい構成変更を自動化する方法を見つけるか、(2) 名前空間プレフィックスを正規化する単純な SAX フィルターを作成し、そのフィルターを介してデータを実行します。ドアの外に出ます。2 番目のアプローチには、データ消費者の懸念を自分自身の処理の周辺に移し、より関心のあることに集中できるという利点があります。

于 2013-07-24T16:31:28.123 に答える