如何以类名作为根元素序列化C#类
我有下面的C班 然后,我使用以下函数将类对象序列化为Xml如何以类名作为根元素序列化C#类,c#,xml,serialization,C#,Xml,Serialization,我有下面的C班 然后,我使用以下函数将类对象序列化为Xml public static XmlDocument SerializeObjectToXML(object obj, string sElementName) { XmlSerializer serializer = new XmlSerializer(obj.GetType(), new XmlRootAttribute("Response")); using (MemoryStream m
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);
}
}
我当前对XML的输出如下:
<Response>
<CustId></CustId>
<CustName></CustName>
</Response>
但我如何才能得到这样的回应
<Response>
<Customer>
<CustId></CustId>
<CustName></CustName>
</Customer>
</Response>
您可以创建一个包含客户的响应对象,因为这也是您想要的xml显示的内容
[XmlRoot("Response")]
public class ResponseClass
{
[XmlElement("Customer")]
public Myclass Customer {get;set;}
}
将
MyClass
上的xmlementAttribute
(根据)更改为XmlTypeAttribute
:
[XmlType("Customer")]
public class MyClass
{
[XmlElement("CustId")]
public int Id { get; set; }
[XmlElement("CustName")]
public string Name { get; set; }
}
序列化方法现在可以是(与问题中的方法相同,但在XmlSerializer
的构造函数中没有第二个参数):
您可以这样定义它们:
public class MyClass
{
[XmlElement("Customer")]
public Customer cust { get; set; }
}
public class Customer
{
[XmlElement("CustId")]
public int Id { get; set; }
[XmlElement("CustName")]
public string Name { get; set; }
}
顺便说一下,
[XmlElement(“Customer”)]
在您的示例中无效…如果是这样的话,应该是[XmlRoot(“Response”)],但他已经在其他地方处理过了。虽然我确实认为这会给出正确的输出。您不能将XmlElementAttribute与类一起使用。我刚刚注意到,在我写这篇文章时,发布了两个答案:)…我将我的问题从[XmlElement(“客户”)改为[XmlRoot(“客户”)],这是应该的
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;
}
public class MyClass
{
[XmlElement("Customer")]
public Customer cust { get; set; }
}
public class Customer
{
[XmlElement("CustId")]
public int Id { get; set; }
[XmlElement("CustName")]
public string Name { get; set; }
}