1

XSDファイルを使用してxsd.exeを介してC#コードを生成し、結果のコードを使用してXMLをシリアル化します。

問題は、defaut / root xmlns名前空間と、この要素に別の「生の」名前空間を定義する要素(プレフィックスなし)を持つXMLファイルを生成する必要があることです。

説明のために、(XML全体ではなく)簡単なサンプルを次に示します。

<?xml version="1.0" encoding="utf-16"?>
<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://mynamespace">
   <ABC>STACKOVERFLOW</ABC>
   <Method Name="TEST" xmlns="http://myothernamespace">
     <DEF>123456</DEF>
   </Method>
 </Request>

Method要素(プレフィックスなし)に2番目のxmlns属性を「挿入」する方法が見つかりません。

このXMLは、もう一方の端でXMLデシリアライザーを使用していないが、XMLを文字列として解析し、完全に一致する文字列を探しているアプリケーションに送信されるため、プレフィックスを使用できません(もちろんこれはそうではありません)この「受信」アプリケーションを変更することが可能です)。

XSDでさまざまなことを試しましたが、何も機能しません:( MSMQを使用してXMLメッセージを転送しているため、リクエストを自分でシリアル化することはありません(リクエストオブジェクトに正しいパラメーターを指定するだけで、シリアル化はバックグラウンドで処理されます) )。

XmlSerializerを使用して、2番目のxmlnsなしでXMLを文字列にシリアル化し、送信する前にXMLに(文字列に)コーディングして追加することもできますが、これは汚いので、これを追加するだけでこの方法を使用するのはバグです。メソッド要素のxmlns"属性。

純粋なXSD(xsd.exeを使用した.NETコード生成)を介してこれを回避する方法はありますか?

私の質問が明確であり、一部の人々がそれに答えることができることを願っています

前もって感謝します !

4

2 に答える 2