2011-10-26 10 views
1

私は学校の割り当てのためのXMLビューアをコーディングしていますが、ファイルの構造を知らなくてもXMLファイルを読み込む方法はありません。
私はファイルを読んだ後、リストボックスにXML構造を表示します。未知の構造を持つXMLを読むにはどうすればいいですか

それは学校の割り当てだとこれは結果でなければなりません:私は完全にロードできるサンプルファイルを持っていますが、私はランダムなファイルとこだわっている XML Viewer

XmlDocument doc = new XmlDocument(); 
using(XmlReader xmlReader = XmlReader.Create("c:\\temp\\sites.xml")) 
{   
    //Load file 
    doc.Load(xmlReader); 
    XmlNode root = doc.DocumentElement; 

    foreach (XmlNode siteNode in root) 
    { 
     //Nodes 
     XmlNode URLNode = siteNode.FirstChild; 
     XmlNode EmailNode = siteNode.LastChild; 

     //Create site 
     Site site = new Site(URLNode.FirstChild.Value, EmailNode.FirstChild.Value); 

     //Add to list 
     sites.Add(site); 
    } 
    Console.WriteLine(sites.Count); 
} 
+2

あなたは何をしたいですか?属性付き/なしのノード名を表示する場合は、構造体を知る必要はありません。ファイルを繰り返し処理して、後のデータを出力するだけです。 – Pateman

+0

あなたが読んでいるXMLの構造/内容について既に仮定しているようですね。 – 48klocs

答えて

8
あなたがクラスにデータを移行するためのいくつかの方法が必要と思いとして、構造について何かを知らなくても、クラス(あなたの Siteのように)知られているクラスにXMLデータを有効にできるようにするつもりはない

コンストラクタパラメータ/プロパティ/ etc

つまり、XMLファイル自体を表示または検査したいだけなら、ルート要素内のXmlNode要素を再帰的に検査できます。

XmlNodeには、ChildNodes,AttributesValueなど、これを行う必要があるすべてのプロパティが含まれています。

0

ユースケースについて確認が、小さなジョブスケジューラを書きながら、私は3つの事のセットとして各ジョブは示されていない - スケジューラ、特定のジョブを実装する完全修飾クラス名を、いくつかのテキストのジョブコンテキスト(XML)。スケジューラはスケジュールされた時刻にジョブを実行する必要があるとき、アセンブリのリフレクションと既知の場所を使用してジョブ・クラスを作成していましたが、それを処理する方法を知っていたジョブ・コンストラクタにXMLコンテキストを渡しました。

同様に、内に定義することができれば、それを最初に読んでそれに応じて行動することができます。

0

それが唯一の視聴者の場合は、なぜちょうど私があなただったら、私はに重点を置いて、XMLにLINQを使用して試してみたDataSetまたはDataTableのにXMLをロードして、DataGridの

0

にバインドしませんXElementによって提供される機能 - これはより快適で簡単です。また、あなたのXMLをトラバースするためにReed Copseyが提案したように再帰を使用することをお勧めします。

関連する問題