C# 使用DataContractSerializer时,与XmlArrayItem等效的是什么?
我正在使用DataContractSerializer序列化具有List类型属性的对象,并希望控制字符串的发出方式C# 使用DataContractSerializer时,与XmlArrayItem等效的是什么?,c#,xml,datacontractserializer,C#,Xml,Datacontractserializer,我正在使用DataContractSerializer序列化具有List类型属性的对象,并希望控制字符串的发出方式 [DataContract(Name = "ReportData", Namespace = "")] public class Foo { [DataMember] public List<string> TrackingNumbers { get; set; } } [DataContract(Name=“R
[DataContract(Name = "ReportData", Namespace = "")]
public class Foo
{
[DataMember]
public List<string> TrackingNumbers { get; set; }
}
[DataContract(Name=“ReportData”,Namespace=”“)]
公开课Foo
{
[数据成员]
公共列表跟踪编号{get;set;}
}
序列化此对象时,我得到以下XML:
<ReportData xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<TrackingNumbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:string>14735ec8-81c4-44e4-9bbe-6c661eb74e54</a:string>
</TrackingNumbers>
</ReportData>
14735ec8-81c4-44e4-9bbe-6c661eb74e54
我想要的是:
<ReportData xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<TrackingNumbers xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<TrackingNumber>14735ec8-81c4-44e4-9bbe-6c661eb74e54</TrackingNumber>
</TrackingNumbers>
</ReportData>
14735ec8-81c4-44e4-9bbe-6c661eb74e54
这在DataContractSerializer中可能吗?XmlSerializer和XmlArrayItem很简单,但我无法理解
另外,是否可以生成不包含任何名称空间声明的XML
非常感谢。这对我很有用。这或多或少正是@dbc所建议的:)
[CollectionDataContract(Namespace=”“,ItemName=“TrackingNumber”)]
内部类跟踪编号列表:列表
{ }
[DataContract(Name=“ReportData”,Namespace=”“)]
公开课Foo
{
[数据成员]
public TrackingNumbersList TrackingNumbers{get;set;}
}
您可以子类化列表
并应用[CollectionDataContract(ItemName=“TrackingNumber”,Namespace=”“)]
。看:还有。非常感谢@dbc,这就成功了
[CollectionDataContract(Namespace = "", ItemName = "TrackingNumber")]
internal class TrackingNumbersList : List<string>
{ }
[DataContract(Name = "ReportData", Namespace = "")]
public class Foo
{
[DataMember]
public TrackingNumbersList TrackingNumbers { get; set; }
}