我正在编写一个代码,其中我正在遍历包含特定文件夹结构的XML文件。我想以表格格式显示文件夹名称及其中的文件。以下是我的代码:
DataTable dtCheckPropertyOutput = new DataTable();
dtCheckPropertyOutput.Columns.Add("Property Name");
dtCheckPropertyOutput.Columns.Add("Expected value");
string folderName = null;
string fileName = null;
// display each folder
foreach (var folder in mainFolder.Elements())
{
DataRow anyRow = dtCheckPropertyOutput.NewRow();
folderName = folder.Attribute("Name").Value;
MessageBox.Show(folderName);
anyRow["Property Name"] = "Folder";
anyRow["Expected Value"] = folderName;
// display each file
foreach (var file in folder.Elements())
{
fileName = file.Attribute("Name").Value;
anyRow["Property Name"] = "File";
anyRow["Expected Value"] = fileName;
}
dtCheckPropertyOutput.Rows.Add(anyRow);
dataGridView1.DataSource = dtCheckPropertyOutput;
问题是我只能查看xml中的最后一个元素,但不能查看所有条目。对于例如如果xml如下所示,我只能查看文件3和文件5 [但不能查看文件夹1,文件1,文件夹2和文件2]:
<Root>
<MainFolder Name="Main Folder">
<Folder Name="Folder1">
<File Name="File1" />
<File Name="File3" />
</Folder>
<Folder Name="Folder2">
<File Name="File2" />
<File Name="File5" />
</Folder>
</MainFolder>
</Root>
请有人帮助我。提前谢谢。
答案 0 :(得分:0)
确定。这只是一个愚蠢的错误。我是C#的新手,我还在练习各种各样的东西。为了解决它,我刚刚在嵌套的foreach循环开始之前和嵌套的foreach循环结束之前添加了以下2行。
dtCheckPropertyOutput.Rows.Add(anyRow);
anyRow = dtCheckPropertyOutput.NewRow();
我不确定,但请纠正我并让我知道是否有更好的方法。