在C#中序列化期间,将字典中的其他元素添加到XML

时间:2018-04-07 10:34:31

标签: c# xml serialization

XML的一部分看起来像这样。

<element>
    <subelment1>text</subelement1>
    <subelement2>text2</subelement2>
    ...
    <additionalelement1>element1text</additionalelement1>
    <additionalelement2>element2text</additionalelement2>
    ...
</element>

它有很多子元素。

我想在序列化过程中添加其他元素,但数字和名称总是不同的。 所以它会是这样的:

{{1}}

其他元素存储在字典中,其中元素名称是键。

有没有办法用XmlSerializer或任何其他序列化器来完成这个?

1 个答案:

答案 0 :(得分:0)

我经常发布这个解决方案:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication34
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement element = doc.Descendants("element").FirstOrDefault();

            Dictionary<string,string> dict = element.Elements().GroupBy(x => x.Name.LocalName, y => (string)y)
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());
        }
    }
}