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コード生成)を介してこれを回避する方法はありますか?
私の質問が明確であり、一部の人々がそれに答えることができることを願っています
前もって感謝します !