2012-04-17 3 views
0

でディレクトリ内のXMLファイルをループするときに私は、ディレクトリをループに次のコードを使用してXMLファイルを探して、それらをreadindています:私は単一でXML.Createを使用する場合エラーXmlTextReaderは

XmlReader reader = null; 

foreach (string file in files) 
{ 
    try 
    { 
    System.IO.FileInfo fi = new System.IO.FileInfo(file); 

    string fext = fi.Extension; 
    if (fext == ".xml") 
    { 
     Console.WriteLine("Processing file:" + fi.Name); 
     reader = XmlReader.Create(fi.Name); 
     **//BUT THIS WORKS---> reader = new XmlReader(@"\\10.00.100.11 \Data\Cognos\ReportOutput\Test\Risk Rating Exception Detail (LN-133-D)-en-us_2012-04-14T031017814Z-pdf_desc.xml");** 

      while (reader.Read()) 
      { 
       switch (reader.NodeType) 
       { 
       case XmlNodeType.Element: // The node is an element. 
         Console.Write("<" + reader.Name); 
         Console.WriteLine(">"); 
         break; 
       case XmlNodeType.Text: //Display the text in each element. 
         Console.WriteLine(reader.Value); 
         break; 
       case XmlNodeType.EndElement: //Display the end of the element. 
         Console.Write("</" + reader.Name); 
         Console.WriteLine(">"); 
         break; 
       } 

      } 

      reader.Close(); 

     } 

    } 
    catch (System.IO.FileNotFoundException e) 
    { 
    // If file was deleted by a separate application or thread since the call to TraverseTree() then just continue. 
     Console.WriteLine(e.Message); 
     continue; 
    } 

} 

ファイル(しかし、この作品を参照してください)、私はその文書のすべてを読むことができます。 fi.Nameと一緒に使用すると、「Processing file:」というメッセージが表示され、ディレクトリ内のすべてのxmlファイルに対して「C:\ Documents and Settings \\ My Documents」というファイルが見つかりませんでした\ Visual Studio 2010 \ Projects \ MoveReportsTest \ MoveReportsTest \ bin \ Debug \

私は読者のインスタンス化を移動しようとしましたが、最初はすべてのファイルについてインスタンス化されました。すべてのファイルに対して同じリーダーをインスタンス化することはできませんが、何も変更されませんでした(同じエラー)。 'ファイルメッセージが見つかりませんでした。キャッチフレーズから来ていません...私は偶然です...助けてください!ありがとう!

+0

fi.Nameが疑わしいようです。代わりにfi.FullNameが必要な場合があります。 FileNotFoundだけでなく、catch(例外例外)を追加することもできます。それはトラブルシューティングに役立ちます。 –

答えて

1

はそれだけで名ファイルの選びます。パス内にファイル名だけを指定すると、のデフォルトのパスは、バイナリがあるフォルダになります。そのため、表示されるファイルはC:\Documents and Settings\\My Documents\Visual Studio 2010\Projects\MoveReportsTest\MoveReportsTest\bin\Debug\です。

XMLのファイルへのパス=>fi.FullName

+0

それは問題でした、しかし、今、それは不規則に動作しています。「処理ファイル:..」の表示が見える前に、たくさんのタグが表示されます。私はreader.Close()を正しく使っていますか? (ちょうどxmlファイルのループをouside)?どうもありがとう!! – MariusD

+0

@MariusD:提供されているコードから、正しい場所にあるようです。 – Tigran

+0

もう一度ありがとう、それは2つのファイルを読み込んだ後に処理を停止するように見えます、私はそれを調べます。 – MariusD

0

相対的な場所でファイルを検索しているように見せかけますが、相対的な場所iを探すことに注意してくださいあなたがfi.Nameのみを使用している場合は、相対位置を使用していない場合はfi.FullNameを使用することをお勧めします。あなたはfi.Nameを参照したよう

FileInfo -> C:/Location/File.Ext 
FileInfo.Name -> File.Ext 
FileInfo.FullName -> C:/Location/File.Ext 

reader = XmlReader.Create(fi.FullName); 
関連する問題