【发布时间】:2016-07-06 06:11:42
【问题描述】:
我有这个 xml:
<folders>
<Folder>
<Folder_name>test</Folder_name>
<Number_of_files>2</Number_of_files>
<File>
<File_name>DTLite4461-0327</File_name>
<File_size_in_bytes>14682176</File_size_in_bytes>
</File>
<File>
<File_name>TeamViewer_Setup-ioh</File_name>
<File_size_in_bytes>11057224</File_size_in_bytes>
</File>
</Folder>
<Folder>
<Folder_name>podFolder1</Folder_name>
<Number_of_files>1</Number_of_files>
<File>
<File_name>npp.6.9.1.Installer</File_name>
<File_size_in_bytes>4203840</File_size_in_bytes>
</File>
</Folder>
<Folder>
<Folder_name>podFolder2</Folder_name>
<Number_of_files>1</Number_of_files>
<File>
<File_name>d-470sqe</File_name>
<File_size_in_bytes>2582112256</File_size_in_bytes>
</File>
</Folder>
</folders>
我想在包含 3 列的网格视图中打印它:文件名、文件大小和父文件夹名称。
我可以从所有节点获取所有数据,但我无法将文件名连接到适当的父文件夹名称和适当的大小
我试过这样:
XmlDocument doc = new XmlDocument();
doc.Load(xPath);
XmlNodeList folderNodes = doc.SelectNodes(@"/folders/Folder");
int brojac = 0;
foreach (XmlNode folderNode in folderNodes)
{
XmlNodeList fileNameNodes = doc.SelectNodes(@"/folders/Folder/File/File_name");
XmlNodeList fileSizeNodes = doc.SelectNodes(@"/folders/Folder/File/Size");
foreach (XmlNode fileName in fileNameNodes)
{
dgvXML.Rows.Add(fileName.InnerText, folderNode.InnerText, "");
}
}
使用此代码,它可以正确打印出父文件夹名称,但每次都获取所有文件,我无法将其连接到文件大小。
我想在网格视图中得到这样的东西:
> File name ----------- Parent folder name ------ File size
> DTLite4461-0327 test 14682176
> TeamViewer_Setup-ioh test 11057224
> npp.6.9.1.Installer podFolder1 4203840
> d-470sqe podFolder2 2582112256
最好的方法是什么?
【问题讨论】:
-
我已经回复了similar question。我的建议是将
<Files>子节点添加到<Folder>节点,然后:<Files><File>1</File><File>2</File></Files>以便能够获取它们。
标签: c# xml datagridview