使用StreamReader从2个XML文件中读取

时间:2016-09-05 15:35:56

标签: c# serialization

假设我有以下XML文件:

Sample1.xml

<?xml version="1.0" encoding="utf-8"?>
<Root>
   <NodeA>
      <Node1>test1</Node1>
      <Node1>test2</Node1>
   </NodeA>
</Root>

Sample2.xml

<?xml version="1.0" encoding="utf-8"?>
<Root>
   <NodeB>
      <Node1>test1</Node1>
      <Node1>test2</Node1>
   </NodeB>
</Root>

我的目标是使用一种工厂方法对这两个xml文件进行反序列化。

为此,我有以下通用代码:

    public static T get<T>() where T : class // class = all reference types
            {
                string Ttype = typeof(T).Name;
                using (var streamReader1 = new StreamReader(directoryPath + @"\Sample1.xml"))
                using (var streamReader2 = new StreamReader(directoryPath + @"\Sample2.xml"))
                using (var xmlReader ??? = XmlReader.Create(streamReader))
                {
                    ...
                }
            }

使用相同的根元素构建两个xml文件。

我的问题是,因为xmlReader创建函数只接受1个流读取器。  如何在*的名义下,我从2 xmls读取xml阅读器?

我是否将2个流合并为1并从第1位读取到最后1位,如果是,如何?

提前致谢,

蒙大拿。

1 个答案:

答案 0 :(得分:0)

我会这样做

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME1 = @"c:\temp\test.xml";
        const string FILENAME2 = @"c:\temp\test2.xml";
        static void Main(string[] args)
        {
            XDocument doc1 = XDocument.Load(FILENAME1);
            XElement root1 = (XElement)doc1.FirstNode;

            XDocument doc2 = XDocument.Load(FILENAME2);
            XElement root2 = (XElement)doc2.FirstNode;

            root1.Add(root2.Elements());
        }

    }
}