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

remove xmlns:i="http://www.w3.org/2001/XMLSchema-instance" when using DataContractSerializer

提问人:Romeo 提问时间:4/16/2014 最后编辑:Romeo 更新时间:3/23/2021 访问量:5852

问:

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

这就是我得到的:

<ProfileModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <Email>[email protected]</Email>
  <FirstName>wolverine</FirstName>
  <ID>ty1002225</ID>
  <LastName>wolverine3</LastName>
  <PhoneNumber>66332214477</PhoneNumber>
  <SourceSystem>TY</SourceSystem>
</ProfileModel>

我想得到这样的东西:

<ProfileModel>
      <Email>[email protected]</Email>
      <FirstName>wolverine</FirstName>
      <ID>ty1002225</ID>
      <LastName>wolverine3</LastName>
      <PhoneNumber>66332214477</PhoneNumber>
      <SourceSystem>TY</SourceSystem>
    </ProfileModel>

这是我的模型:

[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; }
    }

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

C# XML 序列化

评论

0赞 4/16/2014
你可以在这里找到你的答案:stackoverflow.com/a/8061839/3383479
0赞 Bombinosh 4/15/2015
@Inanikian 运算使用的是 DataContractSerializer,而不是 XmlSerializer
0赞 CrnaStena 5/29/2015
@rcadaoas你有没有找到一种不替换字符串的方法?我花了一些时间研究这个问题,但从我发现的一切来看,这似乎是不可能的。
0赞 Romeo 5/31/2015
@CrnaStena,不幸的是,我仍然选择了字符串替换方法。
0赞 Frère Chloé 7/27/2016
您需要使用自定义序列化程序。

答:

-1赞 mahi 2/23/2017 #1

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

  1. 嗨罗密欧...我还尝试了几个小时来删除xmlns:i=“http://www.w3.org/2001/XMLSchema-instance”。

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

    public 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);

}

评论

4赞 Felix D. 2/23/2017
OP 要求提供“替换”以外的解决方案:我试图避免使用字符串替换来删除它。