使用DataContractSerializer时删除xmlns:i ="http://www.w3.org/2001/XMLSchema-instance"

Rom*_*meo 11 c# xml serialization

如何在使用DataContractSerializer时删除xmlns:i ="http://www.w3.org/2001/XMLSchema-instance".

这就是我得到的:

<ProfileModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Email>wolverine@wolverine.com</Email>
  <FirstName>wolverine</FirstName>
  <ID>ty1002225</ID>
  <LastName>wolverine3</LastName>
  <PhoneNumber>66332214477</PhoneNumber>
  <SourceSystem>TY</SourceSystem>
</ProfileModel>
Run Code Online (Sandbox Code Playgroud)

我想得到这样的东西:

<ProfileModel>
      <Email>wolverine@wolverine.com</Email>
      <FirstName>wolverine</FirstName>
      <ID>ty1002225</ID>
      <LastName>wolverine3</LastName>
      <PhoneNumber>66332214477</PhoneNumber>
      <SourceSystem>TY</SourceSystem>
    </ProfileModel>
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

[DataContract(Namespace = "")]
    public class CRMProfileModel
    {
        [DataMember]
        public string FirstName { get; set; }
        [DataMember]
        public string LastName { get; set; }
        [DataMember]
        public string Email { get; set; }
        [DataMember]
        public string PhoneNumber { get; set; }
        [DataMember]
        public string SourceSystem { get; set; }
        [DataMember]
        public string ID { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我试图避免使用字符串替换来删除它.

小智 -1

使用 DataContractSerializer 时如何删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 。

  1. hii Romeo ...我还尝试了几个小时来删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"。

  2. 最后我找到了最好的,希望它会有所帮助

    公共 IHttpActionResult Post([FromBody]MessageResponse 值)

{

 var messageresponse =new CRMProfileModel(){.....};
DataContractSerializer doc = new  DataContractSerializer(messageresponse.GetType());  
MemoryStream ms = new MemoryStream();
 dcs.WriteObject(ms, messageresponse); 
var i = Encoding.UTF8.GetString(ms.ToArray()); 
var r = i.Replace("xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"","");
var ss = new XmlDocument(); 
ss.LoadXml(r);
return Content(HttpStatusCode.OK, ss.DocumentElement, Configuration.Formatters.XmlFormatter);
Run Code Online (Sandbox Code Playgroud)

}

  • OP要求“替换”之外的解决方案:**我试图避免使用字符串替换来删除它。** (4认同)