如何在 C# 中注释我的 XML 以删除数组的父节点?
How do I annotate my XML to remove the parent node of an array in C#?
我有一个集成需要遵循 XML 的特定模式。
其中一个要求是这样的...
<Telecom>
<TeleType>Mobile</TeleType>
<TeleNumber>806-611-1111</TeleNumber>
<TeleType>Home</TeleType>
<TeleNumber>806-411-9111</TeleNumber>
<TeleType>Other</TeleType>
<TeleNumber>806-311-1111</TeleNumber>
</Telecom>
我将模型设置为如下所示:
[XmlArray("Telecom")]
[XmlArrayItem(typeof(Phone))]
public List<Phone> Phones { get; set; }
和
[XmlRoot("Telecom")]
public class Phone
{
[XmlElement("TeleType")]
public string PhoneType { get; set; }
[XmlElement("TeleNumber")]
public string Number { get; set; }
}
然而,我收到的输出是:
<Telecom>
<Phone>
<TeleType>HOME</TeleType>
<TeleNumber>801-555-1234</TeleNumber>
</Phone>
<Phone>
<TeleType>WORK</TeleType>
<TeleNumber>801-123-4321</TeleNumber>
</Phone>
</Telecom>
如何从中删除 Phone 节点并呈现第一个示例?
注:使用
[XmlElement("Telecom")]
public List<MICAPhone> Phones { get; set; }
也不起作用,因为我有多个电信节点。
我找到了使用Linq to xml的解决方案,希望你能走这条路。请看下面:
// You will have to use System.Xml.Linq library
public class Phone // the only class I have
{
public string PhoneType { get; set; }
public string Number { get; set; }
}
public XElement CreateTelecomNode(List<Phone> phones)
{
var telecom = new XElement("Telecom");
foreach (var item in phones)
{
telecom.Add(new XElement("TeleType", item.PhoneType));
telecom.Add(new XElement("TeleNumber", item.Number));
}
return telecom;
}
带有示例列表的输出:
我有一个集成需要遵循 XML 的特定模式。
其中一个要求是这样的...
<Telecom>
<TeleType>Mobile</TeleType>
<TeleNumber>806-611-1111</TeleNumber>
<TeleType>Home</TeleType>
<TeleNumber>806-411-9111</TeleNumber>
<TeleType>Other</TeleType>
<TeleNumber>806-311-1111</TeleNumber>
</Telecom>
我将模型设置为如下所示:
[XmlArray("Telecom")]
[XmlArrayItem(typeof(Phone))]
public List<Phone> Phones { get; set; }
和
[XmlRoot("Telecom")]
public class Phone
{
[XmlElement("TeleType")]
public string PhoneType { get; set; }
[XmlElement("TeleNumber")]
public string Number { get; set; }
}
然而,我收到的输出是:
<Telecom>
<Phone>
<TeleType>HOME</TeleType>
<TeleNumber>801-555-1234</TeleNumber>
</Phone>
<Phone>
<TeleType>WORK</TeleType>
<TeleNumber>801-123-4321</TeleNumber>
</Phone>
</Telecom>
如何从中删除 Phone 节点并呈现第一个示例?
注:使用
[XmlElement("Telecom")]
public List<MICAPhone> Phones { get; set; }
也不起作用,因为我有多个电信节点。
我找到了使用Linq to xml的解决方案,希望你能走这条路。请看下面:
// You will have to use System.Xml.Linq library
public class Phone // the only class I have
{
public string PhoneType { get; set; }
public string Number { get; set; }
}
public XElement CreateTelecomNode(List<Phone> phones)
{
var telecom = new XElement("Telecom");
foreach (var item in phones)
{
telecom.Add(new XElement("TeleType", item.PhoneType));
telecom.Add(new XElement("TeleNumber", item.Number));
}
return telecom;
}
带有示例列表的输出: