微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

序列化 – 在DataContractSerializer XML输出中删除“d1p1”命名空间前缀

我使用DatacontractSerializer将我的domainModel序列化为一个xml文件.
我得到如下输出.
<z:anyType xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="1" xmlns:d1p1="DCSerialization_IGITApproach" i:type="d1p1:X" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
  <d1p1:Name z:Id="2">Ankit</d1p1:Name>
  <d1p1:PointsDictionary xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" z:Id="3" z:Size="1">
    <d2p1:keyvalueOfstringPointsArrayq9VX7VJJ>
      <d2p1:Key z:Id="4">key1</d2p1:Key>
      <d2p1:Value xmlns:d4p1="http://schemas.datacontract.org/2004/07/SerializationApproach" z:Id="5">
        <d4p1:points z:Id="6" z:Size="2">
          <d2p1:double>45.5</d2p1:double>
          <d2p1:double>546.45</d2p1:double>
        </d4p1:points>
      </d2p1:Value>
    </d2p1:keyvalueOfstringPointsArrayq9VX7VJJ>
  </d1p1:PointsDictionary>
</z:anyType>

而我想摆脱这些“d1p1”命名空间前缀,只需要< / PointDictionary>喜欢标签,而不是< / d1p1:PointsDictionary&gt ;.
我已经尝试将DataMember属性放在我的类属性上,但并不能解决很多问题.
由于输出XML文件可以由最终用户进行编辑,所以我想要一个更清晰的XML文件,与上述相比.

一个优先事项是通过代码来控制它,如果不可能,那么去XSLT或任何其他模式.

使用空的命名空间似乎删除前缀.使用以下DataContract属性设置您的课程:
[DataContract(Namespace="")]
public class MyClass
{ ... }

那么当(de)序列化时,请确保将命名空间设置为空字符串:

DataContractSerializer deserializer = new DataContractSerializer(typeof(MyClass),typeof(MyClass).Name,"");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。