C# 将对象列表转换为xml字符串

C# 将对象列表转换为xml字符串,c#,xml,xml-serialization,xelement,C#,Xml,Xml Serialization,Xelement,您好,我有一个要转换为xml的对象列表。下面是最终的xml应该是什么样子 <ArrayOfTweet> <Tweet> <Photos> <Photo> <PhotoHeight>FOO</PhotoHeight> <PhotoUri>a/random/ur/path</PhotoUri>

您好,我有一个要转换为xml的对象列表。下面是最终的xml应该是什么样子

<ArrayOfTweet>
    <Tweet>
        <Photos>
            <Photo>
                <PhotoHeight>FOO</PhotoHeight>
                <PhotoUri>a/random/ur/path</PhotoUri>
                <PhotoWidth>923</PhotoWidth>
                <SourcePhotoUri>a/random/path</SourcePhotoUri>
            </Photo>
        </Photos>
        <ProfileImage>a/random/path</ProfileImage>
        <ScreenName>FOO</ScreenName>
        <Text>some text</Text>
        <TweetId>1234</TweetId>
        <UserId>1234</UserId>
        <Username>BAR</Username>
    </Tweet>
    <Tweet>
        <Photos>
            <Photo>
                <PhotoHeight>FOO</PhotoHeight>
                <PhotoUri>a/random/ur/path</PhotoUri>
                <PhotoWidth>923</PhotoWidth>
                <SourcePhotoUri>a/random/path</SourcePhotoUri>
            </Photo>
        </Photos>
        <ProfileImage>a/random/path</ProfileImage>
        <ScreenName>FOO</ScreenName>
        <Text>some text</Text>
        <TweetId>1234</TweetId>
        <UserId>1234</UserId>
        <Username>BAR</Username>
    </Tweet>
</ArrayOfTweet>

但是还有我不需要的额外的
。有办法做到这一点吗?

我认为
XElement xmlElements=new XElement(“ArrayOfTweet”,xmlStringTweetList.Select(I=>XElement.Parse(I))应该可以。

我制作了一个提琴,演示了一种一次性序列化对象的方法,而不是将字符串拼接在一起


我怀疑你额外的
是因为列表中有一个null或空值,因为我在上面的测试中没有遇到它。

你为什么不一次获取整个对象结构并序列化所有对象?你的意思是序列化TweetList对象?我试过了,但我想不出如何使它正常工作。我发现有错误。你有什么建议吗?我很乐意这样做,因为这会更容易。我刚刚发布了一个答案,说明如何将其序列化为一个对象。方括号中的类型是错误的。取出上面的[XmlArray]推文并替换为[XmlElement]。谢谢@Martin,我得到一个错误System.Xml.XmlElement不包含“Parse”的定义,但我在这里检查,它就在那里。我必须弄清楚为什么会这样,应该是
XElement.Parse
。谢谢Martin,我做了更改,它也成功了!但我会选择@maccetturas小提琴,因为它很干净。
//TweetList is the list of tweet objects

List<string> xmlStringTweetList = new List<string>();
foreach (var tl in TweetList)
{
    xmlStringTweetList.Add(toXML(tl));
}

private string toXML(Tweet t)
{
    var stringwriter = new System.IO.StringWriter();
    var serializer = new XmlSerializer(t.GetType());
    serializer.Serialize(stringwriter, t);
    return stringwriter.ToString();
}
XElement xmlElements = new XElement("ArrayOfTweet", xmlStringTweetList.Select(i => new XElement("Tweet", i)));