2011-12-20 18 views
3

私は、WCFサービスを持っていると私は以下のようなクラスを持っている:予期しないタグ名

public class Message 
{ 
    [XmlElement(ElementName = "message")] 
    [DataMember(Name = "message")] 
    public string message { get; set; } 

    [XmlElement(ElementName = "MsgID")] 
    [DataMember(Name = "MsgID")] 
    public string MsgID{ get; set; } 
} 

は、私は、ブラウザで私は以下のようになっていますXMLを自分のサービスを閲覧:

<MessageResponse> 
    <Status>SUCCESS</Status> 
    <Messages> 
     <a:Message> 
     <a:message>msg1</a:message> 
     <a:MsgID>1</a:MsgID> 
     </a:Message> 
    </Messages> 
</MessageResponse> 

私のサービス契約は、以下のようなものです:そしてもう一つ重要なことがある: MessageDcoクラス

メッセージクラスのコピーです

マイマッパークラスは、以下のようなものです:

public sealed class Mapper 
    { 
    public static MessageDco[] ToDataContractObjects(IEnumerable<MessageDco> objMessageDco) 
    { 
     if (objMessageDco != null) 
     { 
      return objMessageDco.Select(a => ToDataContractObjects(a)).ToArray(); 
     } 
     else 
     { 
      return null; 
     } 
    } 
} 

私たちが見る場合

は「:」タグに追加されます。それがなぜ追加されたのですか?私はタグから "a:"を取り除くことができません。タグから「a:」を削除する方法を教えてください。また、MessageResponseクラス(Statusタグ)が正しく表示されていることがわかりましたが、MessageResponseの配列リスト(Message [])が間違っています。

ありがとうございます。

答えて

1

aは、要素の生成された名前空間です。 DataContractSerializerの場合

あなたはそうのようなServiceContractAttributeを使用して、サービス定義であなたのタイプのために名前空間を削除することができます返信リッチため

[ServiceContract(Namespace="")] 
+0

感謝を。私はResponse XMLを編集しました。これは私がサービスから得た正しいXMLです。 ServiceContract(名前:[ServiceContract(Namespace = "")])に名前空間を追加しましたが、応答は同じでした。私のコードで間違っていることを教えてください。 –

関連する問題