0

次のコードを使用してディレクトリをループし、xml ファイルを探して読み込みます。

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

}

単一のファイルで XML.Create を使用すると (BUT THIS WORKS を参照)、そのドキュメントのすべてを読み取ることができます。fi.Name で使用すると、「ファイルを処理しています:」というメッセージが表示され、ディレクトリ内のすべての xml ファイルについて、「ファイル 'C:\Documents and Settings\\My Documents が見つかりませんでした」と表示されます。 \Visual Studio 2010\Projects\MoveReportsTest\MoveReportsTest\bin\Debug\.

リーダーのインスタンス化を移動しようとしましたが、最初はすべてのファイルに対してインスタンス化されていました.同じエラー)。「ファイルが見つかりませんでした」というメッセージは、キャッチフレーズから来ているわけではありません...私は無知です...助けてください! ありがとう!

4

2 に答える 2

1

あなたが参照する とき、それはファイルの名前fi.Nameだけを選びます。パスにファイルの名前のみを指定した場合、デフォルトのパスはバイナリが存在するフォルダになるため、例外として次のように表示されます。C:\Documents and Settings\\My Documents\Visual Studio 2010\Projects\MoveReportsTest\MoveReportsTest\bin\Debug\

読み取るファイルへの完全なパスを渡しXMLます=> fi.FullName

于 2012-04-17T14:48:25.427 に答える
0

エラーを見ると、相対的な場所でファイルを検索しているように聞こえますが、使用する場合fi.Nameのみ相対的な場所を検索することに注意してください。相対的な場所を使用していない場合は使用することをお勧めしfi.FullNameます。

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

reader = XmlReader.Create(fi.FullName);
于 2012-04-17T14:43:36.740 に答える