在我的网络服务中,我有以下课程
public class ContactDetails
{
public string Name { get; set; }
public string Address { get; set; }
public string Postcode { get; set; }
public List<string> PhoneNumber { get; set; }
}
实际上,它返回XML输出中的以下数据
<ContactDetails>
<Name>MR SMITH</Name>
<Address>I HIGH STREET, SOMETOWN</Address>
<Postcode>AA1 2BB</Postcode>
<PhoneNumber>
<string>01234 567890</string>
<string>01234 567890</string>
</PhoneNumber>
</ContactDetails>
显然,我们希望PhoneNumbers&gt; PhoneNumber中的电话号码更加明智,并且似乎无法完全正确。
我们添加了XmlElement标记,几乎就在那里;这样
public class ContactDetails
{
public string Name { get; set; }
public string Address { get; set; }
[XmlElement(ElementName = "PC")]
public string Postcode { get; set; }
[XmlElement(ElementName = "PhoneNumber")]
public List<string> PhoneNumber { get; set; }
}
制作以下内容
<ContactDetails>
<Name>MR SMITH</Name>
<Address>I HIGH STREET, SOMETOWN</Address>
<PC>AA1 2BB</PC>
<PhoneNumber></PhoneNumber>
<PhoneNumber></PhoneNumber>
</ContactDetails>
但是如你所见,我们现在已经失去了电话号码的嵌套......所需的输出将是:
<ContactDetails>
<Name>MR SMITH</Name>
<Address>I HIGH STREET, SOMETOWN</Address>
<PC>AA1 2BB</PC>
<PhoneNumbers>
<PhoneNumber></PhoneNumber>
<PhoneNumber></PhoneNumber>
</PhoneNumbers>
</ContactDetails>
答案 0 :(得分:1)
您要使用的属性是:
XmlArrayAttribute
- 控制两级列表的外部名称。
XmlArrayItemAttribute
- 控制两级列表的内部名称。
因此:
public class ContactDetails
{
public string Name { get; set; }
public string Address { get; set; }
public string Postcode { get; set; }
[XmlArray("PhoneNumbers")]
[XmlArrayItem("PhoneNumber")]
public List<string> PhoneNumber { get; set; }
}