1


0

wsdl xml解析、テキストのエンコード後のmaxlengthの問題

私たちは別の会社と協力しています。 私たちのアプリケーションは、私たちの側のWCFと、反対側のカスタム実装されたjava wsdlハンドラーを介して他のアプリケーションと通信します。 これらはwsdl形式を指定し、ルールの1つは、特定の文字列に15文字を超える文字を含めることはできないことです。 (通常は60ですが、簡単な例の理由で15を取ります)

次の文字列を送信しようとすると、wsdlに従って文字列が長すぎるというエラーが表示されます。

" example&test ">これは14文字の文字列であるため、許可する必要があります

microsoft wcfパーサーはこれを `" example&test "`に変換します。 このエンコードされた文字列は18文字です。

メッセージで定義されたmaxlengthをチェックする標準的な動作は何ですか? エンコードされたメッセージですか、デコードされたメッセージですか? 私はそれがデコードされたメッセージだと思うだろうが、私にはわからない。 エンコードされたメッセージである場合、文字列を分割する方法を知るために、これをどのように処理する必要がありますか?

1 Answer


0


文字列および文字列から派生したデータ型の場合、maxLengthは[XML 1.0(Second Edition)]で定義されている文字単位で測定されます

文字セット[定義:解析されたエンティティには、マークアップまたは文字データを表す可能性のあるテキスト、文字のシーケンスが含まれます。]

マークアップされた文字は単一の文字として扱われるべきであるため、標準的な動作はデコードされていると思います

そのため、通常は、エンコードする前に分割/切り捨てを行います。 そうしないと、エンコードされた文字の途中を切り捨てると問題が発生します。 これをBizTalkを背後に持つWCF Webサービスに対してテストしましたが、maxLengthより長いXMLエンコード文字列で問題ありません。

彼らはそれをデコードする前にそれをしているように聞こえますが。 そのため、最初にエンコードし、次に空白で分割する必要がある場合があります。