0

デコードされた XML をエンドポイントに送信すると、不正なリクエスト エラーで失敗することに気付きましたが、リクエストを CDATA でラップするか文字をエンコードすると正常に動作するので、2 つの質問は次のとおりです。

CDATA を使用したり、文字をエンコードしたりする必要があるのはなぜですか?

私がこれをしなければならないのは、Web サービスについての何ですか?

メッセージを CDATA でラップすることと文字をエンコードすることの違いは何ですか?

CDATA がパーサーによって無視される場合、送信しようとしているメッセージが処理されないということではないですか?

私の Web サービスには Process という Web メソッドがありますが、送信しようとしているメッセージは MessageB です。XML パーサーが理解できないため、MessageB の内容を CDATA でラップする必要がありますか?

Web サービスに MessageB という Web メソッドが含まれている場合、CDATA でラップするかエスケープする必要がありますか? 私の場合、Web メソッド MessageB はありませんが、switch ステートメントを介して MessageB 要求をリッスンする Process と呼ばれるものがあります。MessageB が Web メソッドとして定義されていないため、考えています。これが、CDATA でラップするかエスケープする必要がある理由ですが、私の考えは間違っていると思いますか?

4

4 に答える 4

1

&のような文字<はXMLに表示できません。

XML標準では、XMLエンティティでエスケープするか、<![CDATA[ブロックでラップする必要があります。これにより、XML解析でブロック全体をプレーンテキストとして処理するように指示されます。

これを処理するXMLライブラリを自分の側で使用する必要があります。手作業でXMLを作成しないでください。

于 2012-05-24T13:30:06.597 に答える
1

データをラップまたはエンコードしない場合、データはメインの XML ドキュメントの一部になります。Web サービスがドキュメントを解析しようとすると、期待するものにマップできない要素が見つかり、それを吐き出します。

これは Web サービスに固有のものではありませんが、XML コードを XML ドキュメント内の値として使用する場合はいつでも当てはまります。

CDATA を使用することと文字をエンコードすることの間には、実際的な違いはほとんどありません。XML ドキュメントの値に特殊文字を埋め込むには、2 つの異なる方法があります。

于 2012-05-24T13:32:55.560 に答える
1

一部の文字は、XML で特別な意味を持ちます。たとえば、<「タグの開始」を&意味し、「文字参照の開始」を意味します。

CDATA マーカーは、一部のコンテンツがマークアップではなくプレーン テキストであることを示します。つまり、「小<なり記号」と&「アンパサンド」を意味します。

于 2012-05-24T13:33:15.943 に答える
0

メッセージ<a><b/></a>を誰かに送信する場合、それはメッセージとは異なります<a><[CDATA[<b/>]]></a>。どちらが正しいとか間違っているというわけではありませんが、一方は受信者が期待するものであり、他方はそうでない可能性があります。XML がどのような種類のメッセージを理解するかは、XML の消費者次第です。何かが CDATA になければならないという Web サービスの本質的なことは何もありません。この特定の Web サービスがこのように設計されているように見えるだけです。

于 2012-05-24T15:50:39.380 に答える