使用 XmlTextReader 循环遍历目录中的 XML 文件时出错

本文关键字:XML 文件 出错 XmlTextReader 循环 遍历 使用 | 更新日期: 2023-09-27 18:31:20

我使用以下代码遍历目录,查找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 时(请参阅但这有效),我可以读取该文档中的所有内容。当我与fi一起使用时。名称,我看到消息"处理文件:",然后,对于目录中的每个xml文件,我看到"找不到文件'C:''文档和设置''''我的文档''Visual Studio 2010''项目''移动报告测试''移动报告测试''bin''调试''。

我尝试移动读取器实例

化,起初,它为每个文件实例化,我尝试移动读取器。Close() 周围,认为我无法为每个文件实例化相同的读取器,但它没有改变任何东西(相同的错误)。"找不到文件消息不是来自任何流行语...我一无所知...请帮忙!谢谢!

使用 XmlTextReader 循环遍历目录中的 XML 文件时出错

正如你引用fi.Name它只选择文件的名称。如果您在路径中仅提供文件名,则默认路径将是二进制文件所在的文件夹,以便您在异常中看到的文件夹:C:'Documents and Settings''My Documents'Visual Studio 2010'Projects'MoveReportsTest'MoveReportsTest'bin'Debug'

完整路径传递给要读取XML文件 => fi.FullName

根据错误,听起来您正在相对位置搜索文件,但是请记住,如果您仅使用相对位置,它将查找相对位置fi.Name如果您不使用相对位置,我建议您使用 fi.FullName

FileInfo -> C:/Location/File.Ext
FileInfo.Name -> File.Ext
FileInfo.FullName -> C:/Location/File.Ext
reader = XmlReader.Create(fi.FullName);