5

よりユーザーフレンドリーなメッセージを表示するためのスキーマを回避または設定する方法はありますか?

文字列を解析し、正規表現を使用してそれらを解釈していますが、もっと良い方法があるかもしれません。

元。

"cvc-complex-type.2.4.b: The content of element 'node' is not complete. One of '{\"\":offer,\"\":links}' is expected."

代わりに私は欲しい:

"The element 'node' is not complete. The child elements 'offer' and 'links' are expected."

繰り返しになりますが、問題を検証する追加のレイヤーを作成することで問題を解決しました。しかし、スキーマ検証でXMLツールを使用する必要がある場合、暗号化メッセージが表示されます。

ありがとう

4

3 に答える 3

3

私が知っていることではありません。エラー メッセージを調整するには、おそらくカスタム コードを作成する必要があります。1 つの方法は、バリデーターのエラー メッセージの関連する部分を取り出して、それらを独自のエラー メッセージに挿入できる一連の正規表現を定義することです。このようなものが頭に浮かびます(最適化されていない、一般的なケースを処理していないなどですが、アイデアが得られると思います):

String uglyMessage = "cvc-complex-type.2.4.b: The content of element 'node' is not complete. One of '{\"\":offer,\"\":links}' is expected.";

String findRegex = "cvc-complex-type\\.2\\.4\\.b: The content of element '(\\w+)' is not complete\\. One of '\\{\"\":(\\w+),\"\":(\\w+)}' is expected\\.";

String replaceRegex = "The element '$1' is not complete. The child elements '$2' and '$3' are expected.";

String userFriendlyMessage = Pattern.compile(findRegex).matcher(uglyMessage).replaceAll(replaceRegex);

System.out.println(userFriendlyMessage);
// OUTPUT:
//   The element 'node' is not complete. The child elements 'offer' and 'links' are expected.

これらのバリデーターのエラー メッセージはベンダー固有のものであると思われるため、デプロイされたアプリで XML バリデーターを制御できない場合、これはうまくいかない可能性があります。

于 2009-09-28T20:58:37.323 に答える
1

送信された XML が間違っている場合、ユーザーにわかりやすいエラー メッセージを表示するためにSchematronを使用しています。現在の実装は、特に次の点で少し単純化されています。

  • エラー メッセージのテキストがスキーマトロン ルールにコード化されている
  • 新しい XML タイプ (つまり、新しい XSD スキーマ) ごとに、schematron ルールを手動で追加する必要があります。

ただし、これは次のように修正することで簡単に修正できます。

于 2012-04-18T13:51:55.920 に答える
0

少し前に同じような質問をしました。

私の結論は、エラーをマッピングする方法は提供されておらず、それは自分で行う必要があることであるということでした。

誰かがもっとうまくやれることを願っています!

于 2009-09-28T19:41:49.903 に答える