gpt4 book ai didi

serialization - 删除 DataContractSerializer XML 输出中的 "d1p1"命名空间前缀

转载 作者:行者123 更新时间:2023-12-02 01:37:45 26 4
gpt4 key购买 nike

我正在使用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> 。我尝试将 DataMember 属性放在我的类属性上,但它并不能解决很多问题。由于最终用户可以编辑输出 XML 文件,因此与上面的文件相比,我想要一个外观更清晰的 XML 文件。

首要任务是仅通过代码来控制它,如果不可能,则使用 XSLT 或任何其他架构。

最佳答案

使用空命名空间似乎会删除前缀。使用以下 DataContract 属性设置您的类:

[DataContract(Namespace="")]
public class MyClass
{ ... }

然后确保在(反)序列化时将命名空间设置为空字符串:

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

关于serialization - 删除 DataContractSerializer XML 输出中的 "d1p1"命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com