2011-12-19 14 views
1

私は、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> 
    <a:Message> 
     <a:message>msg1</a:message> 
     <a:MsgID>1</a:MsgID> 
    </a:Message> 
</MessageResponse> 

私のサービス契約は、以下のようなものです: ともう一つ重要なことは、次のとおりです。MessageDcoクラスは

[ServiceContract()] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]  
    public class UserLoginProfileService 
    {   
     [WebGet(UriTemplate = "/GetMessages?MsgID={MsgID}")] 
     public MessageResponse GetMessage(Guid MsgID) 
     { 
      MessageResponse objMessageResponse = new MessageResponse(); 
      try 
      { 

       Message objMessage = new MessageFacade().GetMessage(MsgID); 
       if (objUserLoginProfile != null) 
       { 
        MessageResponse.Status = Status.Success;     
        MessageResponse.Messages = Mapper.ToDataContractObjects(Message); 
       } 
       else 
       { 
        objMessageResponse.Status = Status.Success;      
       } 
      } 
      catch (Exception ex) 
      { 

       objMessageResponse.Status = Status.Failure;    

      } 
      return objMessageResponse; 
     } 
    } 

public class MessageResponse 
    { 
     [XmlElement(ElementName = "Messages")] 
      [DataMember(Name = "Messages")] 
     public MessageDco[] Messages { get; set; } 

      [XmlElement(ElementName = "Status")] 
      [DataMember(Name = "Status")] 
      public string Status { get; set; } 
} 
メッセージクラスのコピーですの

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

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:」を削除する方法を教えてください。また、ステータスタグが正しく表示されている場合は、

ありがとうございます。

+0

"a"は、属性メッセージ、ステータスなどが宣言されている名前空間を定義する接頭辞です。 – Rajesh

+0

ありがとうございました返信Rajesh、しかし、メッセージクラスは別の名前空間(not a)にありますが、まだ私はタグに "a:"を得ています。どのようにそれを削除するには? – Avinash

+0

namepsaceへの参照は、compelteメッセージのルート要素にあります。バイリンガルでそれを調べてみてください。サービス契約を表示することもできますか?私にはより良い理解があり、何らかの解決策を提供しようとしています – Rajesh

答えて

0

あなただけあなたがより多くの彼らが不足している場合は、それらを暗黙的に定義されているので、あなたは、すべてのクラスでのDataContract属性を使用して名前空間を指定する必要がありますまた、のXmlElement属性

を必要としないDataContractSerializerを使用している場合。異なるクラスは異なるXML名前空間を持つことがあります。

MessageResponseオブジェクトはMessageDcoオブジェクトのメッセージ配列を有するが、供給されたサンプルXMLが一致していない、私はメッセージ要素のセットを含むメッセージ要素を期待します。

関連する問題