2010-12-05 20 views
0

これは私の最初の投稿です。問題を自分で解決しようとしていると思っている人もいるかもしれないと心配しています。私は現在、xmlドキュメントをインポートし、そこから基本オブジェクトを作成するための一連の関数を開発しようとしています。C#XML SelectNodes関数

現在、このコードでは、ディレクトリ内のすべてのxmlファイルを探し、リストボックスにファイル名を表示しています。全体的に約10,000個のXMLファイルがあるので、ロードするのに時間がかかります。私は起こるしたい何

public void CreateLibrary() 
{ 
     List<string> fixtureList = new List<String>(); 
     string[] dirs = Directory.GetFiles(@"C:\Windows.old\Users\Michael\Desktop\Application_ DEV\XMLData", "*.xml", 
            SearchOption.AllDirectories); 
foreach (string dir in dirs) 
{ 
      string fixture = System.IO.Path.GetFileName(dir); 


      lbxLibrary.Items.Add(fixture); 
} 

は、ユーザーが新しいリストボックスの項目を選択すると、ファイルのURLがのGetData関数に渡されています。以下を参照:

選択変更イベント

private void lbxLibrary_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
    { 
      Fixture fixture = new Fixture(); 
      lblFixtureName.Text = fixture.GetModelName("C:\Windows.old\Users\Michael\Desktop\Application_ DEV\XMLData\\ExampleData.xml"); 
    } 

GetModelName機能を - これは別のクラスです。

 public string GetModelName(string url) 
    { 
     //Import fixture xml 
     XmlDocument xml = new XmlDocument(); 
     xml.LoadXml(url); 

     XmlNodeList xnList = xml.SelectNodes("/FixtureModel/"); 

     foreach (XmlNode xn in xnList) 
     { 
      ModelName = xn["ModelName"].InnerText; 
     } 

     return ModelName; 

    } 

GetModelName関数で「XmlException was unhandled」エラーが発生しました。

私は問題を抱えています正確なラインは、私はディレクトリの場所を渡しています場所のように見える。

xml.LoadXml(url); 

誰も私が間違っているのかについての任意のアイデアを持っています。

答えて

0

1)LoadXmlは、XMLドキュメントを含む文字列を解析するために使用されます。 Loadは、URLから取得したXMLを解析するために使用されます。

2)適切な方法を使用すると、正しくURLから文字をエスケープしていません。バックスラッシュを二重にするか、文字列の先頭に@を付けます。

+0

これは完全に機能しています。並べ替えるためにいくつかの他のエラーがあったし、まだいくつかのビットとボブに取り組んでいます。この問題は解決されました。すべてのあなたの助けに感謝します。 –