2016-09-05 12 views
-2

を使用して2つのXMLファイルから読む:私は、次のXMLファイルを持っていると仮定するとStreamReaderを


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> 

私の目標1つのファクトリメソッドを使用して2つのxmlファイルを逆シリアル化することです。そのために

私は、次の一般的なコードを持っている:

同じルート要素の両方の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)) 
       { 
        ... 
       } 
      } 

私の質問は、xmlReader create関数がストリームリーダーを1つしか受け付けないためです。 *の名前で、xmlリーダーから2 xmlsを読み込みますか?

1つのストリームに2つのストリームを結合し、1番目のビットから最後の1番目のビットまで読み込みますか?

ありがとうございます。

モンタナ

+3

ようにそれを行うだろう。それは簡単です。最終的な目標を説明するために質問を編集する場合は、アドバイスをお願いします。 –

答えて

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()); 
     } 

    } 
} 
関連する問題