使用 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() 周围,认为我无法为每个文件实例化相同的读取器,但它没有改变任何东西(相同的错误)。"找不到文件消息不是来自任何流行语...我一无所知...请帮忙!谢谢!
正如你引用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);