.NET c#序列化为Parm名称和值
本文关键字:Parm 序列化 NET | 更新日期: 2023-09-27 18:15:15
我有以下对象:
public class sampleObj
{
public string MemberId {get;set;}
public string Address {get;set;}
}
与我交谈的服务希望在<Parm/>
元素的name属性中定义Property Names,其值在子"Xml元素中,如下所示:
<Parm Name="SampleObj">
<Parm Name="MemberId">
<Value>1234</Value>
</Parm>
<Parm Name="Address">
<Value>xyz</Value>
</Parm>
</Parm>
当我将sampleObj序列化为XML时,我得到了以下不正确的XML:
<sampleObj>
<MemberId>1234</MemberId>
<Address>xyz</Address>
</sampleObj>
如何根据需要序列化我的对象?
您可以简单地使用Linq2Xml(我发现大多数时候使用它更容易(
var root = new XElement("Parm",
new XAttribute("Name", "SampleObj"),
new XElement("Parm",
new XAttribute("Name", "MemberId"),
new XElement("Value", "1234")
),
new XElement("Parm",
new XAttribute("Name", "Address"),
new XElement("Value", "xyz")
)
);
var output = root.ToString();
输出:
<Parm Name="SampleObj">
<Parm Name="MemberId">
<Value>1234</Value>
</Parm>
<Parm Name="Address">
<Value>xyz</Value>
</Parm>
</Parm>
/// <summary>
/// When serialized, sampleObj is 'Parm' element
/// </summary>
[XmlRoot("Parm")]
public class sampleObj
{
/// <summary>
/// Name is an attribute of sampleObj/Parm
/// </summary>
[XmlAttribute("Name")]
public string Name { get; set; }
/// <summary>
/// Value is an element of sampleObj/Parm
/// </summary>
[XmlElement("Value")]
public string Value { get; set; }
/// <summary>
/// sampleObj has sampleObj list as elements
/// </summary>
[XmlElement("Parm")]
public List<sampleObj> sampleObjs { get; set; }
}
产生结果:
<?xml version="1.0" encoding="utf-8"?>
<Parm Name="sampleObj">
<Parm Name="MemberId">
<Value>1234</Value>
</Parm>
<Parm Name="Address">
<Value>xyz</Value>
</Parm>
</Parm>
注:
如果需要,还有其他步骤(使用XmlSerializer类(可以删除该指令。