我有以下功能,我可以传递我的C#对象,然后将其转换为Xml。
public static XmlDocument SerializeObjectToXML(object obj)
{
XmlSerializer serializer =
new XmlSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
XmlDocument xmlDoc = new XmlDocument();
serializer.Serialize(ms, obj);
ms.Position = 0;
xmlDoc.Load(ms);
}
}
但是,我需要在Root之后添加一个子元素。例如,我现在
<MyObjectResponse>
<Id>1</Id>
<Name>Mr Smith</Name>
<Numbers>
<Number>100</Number>
<Number>200</Number>
</Numbers>
</MyObjectResponse>
但想要输出
<MyObjectResponse>
<Response>
<Id>1</Id>
<Name>Mr Smith</Name>
<Numbers>
<Number>100</Number>
<Number>200</Number>
</Numbers>
</Response>
</MyObjectResponse>
我怎样才能做到这一点?
答案 0 :(得分:0)
这样的事情可以解决问题:
XmlDocument xmlDoc = new XmlDocument();
serializer.Serialize(ms, obj);
ms.Position = 0;
xmlDoc.Load(ms);
XmlElement newElem = xmlDoc.CreateElement("Response");
//wrong: works for only 1 child element
//kept for edit/reference
//foreach (XmlNode item in xmlDoc.DocumentElement.ChildNodes)
//{
// newElem.AppendChild(item);
//}
while (xmlDoc.DocumentElement.ChildNodes.Count != 0)
{
newElem.AppendChild(xmlDoc.DocumentElement.ChildNodes[0]);
}
xmlDoc.DocumentElement.AppendChild(newElem);
编辑使用foreach
循环将while
循环替换为正确且通用的实现。