假设我有以下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位,如果是,如何?
提前致谢,
蒙大拿。
答案 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());
}
}
}