有没有办法将动态创建的对象序列化为xml字符串?
var foobar = new { foo = "bar" };
string xml = ConvertToXMLString(foobar);
//xml should be something like :
//<foo>bar</foo>
我能够查看XMLSerializer和DataContractSerializer,但XMLSerializer需要对象类型,而DataContractSerializer需要属性需要序列化。
出于绝望,我首先将对象转换为JSON,然后从JSON将其转换为XML。
var foobar = new { foo = "bar" };
JavaScriptSerializer js = new JavaScriptSerializer();
jsonString = js.Serialize(values);
//Json.NET at http://json.codeplex.com/
XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(jsonString);
答案 0 :(得分:5)
不使用标准内置序列化程序,不; XmlSerializer
要求公共类型(匿名类型不是),仅适用于读写成员(匿名类型没有)。 DataContractSerializer
需要属性(匿名类型没有)。
坦率地说,这里最简单,最可支持的“修复”是正式声明一个匹配你所追求的POCO DTO,也就是说:不要在这里使用匿名类型。例如:
public class MyDto {
public string foo {get;set;}
}
...
var foobar = new MyDto { foo = "bar" };
替代方案是基本上编写自己的xml序列化程序。那...听起来不是很有趣。
答案 1 :(得分:1)
可以使用反射完成,查看此主题中的第二个和第三个答案以获取代码示例:Can I serialize Anonymous Types as xml?