首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将List<ExpandoObject>转换为XML字符串

如何将List<ExpandoObject>转换为XML字符串
EN

Stack Overflow用户
提问于 2015-05-11 11:11:57
回答 1查看 2.8K关注 0票数 1

我想使用ExpandoObjects列表作为Telerik报告的数据源,但目前Telerik报告似乎不支持这一点。它们确实支持将XML作为数据源,因此我试图将我的ExpandoObjects列表转换为XML。

我在Can I serialize an ExpandoObject in .NET 4?上看到,可以通过ExpandoObject (VB.net代码,而不是c#)通过jsonFx将单个ExpandoObject序列化为XML:

代码语言:javascript
复制
dim XMLwriter As New JsonFx.Xml.XmlWriter
dim serializedExpando as string = XMLwriter.Write(obj)

或其等效的c#代码:

代码语言:javascript
复制
JsonFx.Xml.XmlWriter XMLwriter = new JsonFx.Xml.XmlWriter();
String serializedExpando  = XMLwriter.Write(obj);

如何将整个列表序列化为XML字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-11 11:31:11

您可以先将ExpandoObject转换为IDictionary<string, object>,然后使用DataContractSerializer进行序列化,从而将其序列化:

代码语言:javascript
复制
void Main()
{
    dynamic firstExpando = new ExpandoObject();
    firstExpando.Name = "Name";
    firstExpando.Age = 1;

    dynamic secondExpando = new ExpandoObject();
    secondExpando.Name = "SecondName";
    secondExpando.Age = 2;

    var expandoList = new List<ExpandoObject> {firstExpando, secondExpando};

    var list = expandoList.Select(expando => (IDictionary<string, object>)expando)
                          .ToList();

    var dataContractSerializer = new DataContractSerializer(list.GetType());
    using (MemoryStream memoryStream = new MemoryStream())
    {
        dataContractSerializer.WriteObject(memoryStream, list);
        string outputXml = Encoding.UTF8.GetString(memoryStream.ToArray())
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30166183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档