Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将多个XML文件读入XML类结构_C#_Xml_Serialization - Fatal编程技术网

C# 将多个XML文件读入XML类结构

C# 将多个XML文件读入XML类结构,c#,xml,serialization,C#,Xml,Serialization,我希望在给定由文件名组成的字符串列表的情况下,将多个XML文件读取并反序列化到我的XML类结构中。 显然,在读取一个xml文件时,您可以这样做: XmlRoot file = null; XmlSerializer ser = new XmlSerializer(typeof(XmlRoot)); using (XmlReader read = XmlReader.Create(FileName)) { file = (XmlRoot)ser.Deserialize(read); {

我希望在给定由文件名组成的字符串列表的情况下,将多个XML文件读取并反序列化到我的XML类结构中。 显然,在读取一个xml文件时,您可以这样做:

XmlRoot file = null;
XmlSerializer ser = new XmlSerializer(typeof(XmlRoot));
using (XmlReader read = XmlReader.Create(FileName))
{
    file = (XmlRoot)ser.Deserialize(read);
{
    public static XmlLanguage Deserialize(XDocument doc)
    {
        XmlSerializer ser = new XmlSerializer(typeof(XmlLanguage));
        return (XmlLanguage)ser.Deserialize(doc.CreateReader());
    }
哪个将把XML文件反序列化到类结构中

不可能有一个包含文件名的列表,并使用foreach循环对其进行迭代、逐个读取和反序列化,因为理论上这会导致在类结构中读取、反序列化和复制多个根元素

因此,一般来说,我希望反序列化每个文件,并将所需的主元素附加到根对象

有人知道如何做到这一点吗?这会有很大的帮助

提前谢谢


请原谅我的英语,因为我不是以英语为母语的人。如果你需要更多的信息,就告诉我

我设法自己解决了这个问题。 首先,我为我读取的第一个文件创建了一个XDocument,然后我遍历了其他文档,为每个xml文件创建了一个新的XDocument,并尝试获取根(在我的例子中是语言)之后的元素,并将其添加到在循环外部创建的XDocument的根中

        XDocument lDoc = new XDocument();
        int counter = 0;
        foreach (var fileName in multipleFileNames)
        {
            try
            {
                counter++;
                if (lCounter <= 1)
                {
                    doc = XDocument.Load(fileName);
                }
                else
                {
                    XDocument doc2 = XDocument.Load(fileName);
                    IEnumerable<XElement> elements = doc2.Element("Language")
                        .Elements();

                    doc.Root.Add(elements);
                }
            }
            return Deserialize(lDoc);

是否要将多个xml文件反序列化为单个对象?你为什么需要这个?通常一个xml正好匹配xml根元素的一个对象。你能举一个你想要实现的例子吗?因为xml文件包含我们的本地化语言信息,它们被分成多个较小的文件。因此,我们仍然可以将它们作为一个文件一起导出。我想不起有什么可以这样做的。你得找个地方合并。。从所有文件中创建一个xml负载,然后反序列化该负载,或者对每个文件执行反序列化,并将所需元素附加到主根对象。@Wheels73这正是我所想的,如果我提供的文本不清楚,很抱歉。@joshi422-没问题。尝试使用LINQXML。我发现浏览文档、提取和附加节点更容易。