使用 DataContractSerializer 时删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
Posted
技术标签:
【中文标题】使用 DataContractSerializer 时删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"【英文标题】:remove xmlns:i="http://www.w3.org/2001/XMLSchema-instance" when using DataContractSerializer 【发布时间】:2014-05-30 23:39:31 【问题描述】:如何在使用 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>
我想得到这样的东西:
<ProfileModel>
<Email>wolverine@wolverine.com</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;
我试图避免使用字符串替换来删除它。
【问题讨论】:
您可以在这里找到答案:***.com/a/8061839/3383479 @Inanikian Op 使用的是 DataContractSerializer,而不是 XmlSerializer @rcadaoas 你有没有找到一种不用字符串替换的方法?我花了一些时间研究这个,但从我发现的一切来看,这似乎是不可能的。 @CrnaStena,不幸的是,我仍然选择了字符串替换方法。 您需要使用自定义序列化程序。 【参考方案1】:如何在使用 DataContractSerializer 时删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"。
hii Romeo...我也尝试了几个小时来删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"。
终于找到了最好的,希望对你有帮助
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);
【讨论】:
OP 要求“替换”以外的解决方案:我试图避免使用字符串替换来删除它。以上是关于使用 DataContractSerializer 时删除 xmlns:i="http://www.w3.org/2001/XMLSchema-instance"的主要内容,如果未能解决你的问题,请参考以下文章
使用 DataContractSerializer 时设置属性的初始值
使用 DataContractSerializer 和 XmlDictionaryWriter 序列化 JObject 后崩溃
在原语列表上使用 DataContractSerializer 的自定义元素名称
使用 DataContractSerializer 的接口中的显式类型