nei*_*ldt 6 c# xml serialization
我有以下C#类
[XmlRoot("Customer")]
public class MyClass
{
[XmlElement("CustId")]
public int Id {get;set;}
[XmlElement("CustName")]
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用以下函数将类对象序列化为Xml
public static XmlDocument SerializeObjectToXML(object obj, string sElementName)
{
XmlSerializer serializer =
new XmlSerializer(obj.GetType(), new XmlRootAttribute("Response"));
using (MemoryStream ms = new MemoryStream())
{
XmlDocument xmlDoc = new XmlDocument();
serializer.Serialize(ms, obj);
ms.Position = 0;
xmlDoc.Load(ms);
}
}
Run Code Online (Sandbox Code Playgroud)
我目前输出的XML是这样的;
<Response>
<CustId></CustId>
<CustName></CustName>
</Response>
Run Code Online (Sandbox Code Playgroud)
但是我怎么能得到响应呢?
<Response>
<Customer>
<CustId></CustId>
<CustName></CustName>
</Customer>
</Response>
Run Code Online (Sandbox Code Playgroud)
根据http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute(v=vs.110).aspx更改XmlElementAttributeon MyClass(它实际上不是那里有效)到:XmlTypeAttribute
[XmlType("Customer")]
public class MyClass
{
[XmlElement("CustId")]
public int Id { get; set; }
[XmlElement("CustName")]
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
序列化方法现在可以(与问题中的方法相同,但构造函数中没有第二个参数XmlSerializer):
public static XmlDocument SerializeObjectToXML(object obj, string sElementName)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlDocument xmlDoc = new XmlDocument();
using (MemoryStream ms = new MemoryStream())
{
serializer.Serialize(ms, obj);
ms.Position = 0;
xmlDoc.Load(ms);
}
return xmlDoc;
}
Run Code Online (Sandbox Code Playgroud)