XML如下:
<?xml version="1.0" encoding="utf-8"?>
<Folder_Settings>
<Documents>Checked</Documents>
<Pictures>Not Checked</Pictures>
<Music>Checked</Music>
<Videos>Not Checked</Videos>
<Downloads>Checked</Downloads>
<Contacts>Checked</Contacts>
<Favorites>Not Checked</Favorites>
<Other>Checked</Other>
<OtherFolderSettings>C:\Users\Asus\Desktop\revouninstaller-portable</OtherFolderSettings>
<OtherFolderSettings>D:\Personal Website</OtherFolderSettings>
<OtherFolderSettings>D:\testing</OtherFolderSettings>
<OtherFolderSettings>C:\Users\Asus\Desktop\revouninstaller-portable</OtherFolderSettings>
<OtherFolderSettings>C:\Users\Asus\.eclipse</OtherFolderSettings>
</Folder_Settings>
我想获取OtherFolderSettings中的信息并将其填充到列表框中。我正在使用的代码有点工作,但它只将前两个文件夹字符串添加到列表框中。提前感谢您的所有帮助和建议。
代码:
var applicationSettingsXML = new XmlDocument();
var XMLFileStream = new FileStream("Settings.xml", FileMode.Open);
applicationSettingsXML.Load(XMLFileStream);
var folderList = applicationSettingsXML.GetElementsByTagName("Folder_Settings");
for (var i = 0; i <= folderList.Count; i++)
{
listBox1.Items.Add( applicationSettingsXML.GetElementsByTagName("OtherFolderSettings")[i].InnerText);
}
XMLFileStream.Close();
答案 0 :(得分:0)
您的代码无效的原因是因为您的循环是:
folderList
...其中Folder_Settings
是folderList[i]
元素的列表。只有其中一个,所以你要迭代两次。你实际上没有使用<
这是一个很好的工作,因为否则你将在第二次迭代中超出范围。像这样的循环应该总是使用<=
而不是XmlDocument
。
但是,我强烈建议使用LINQ to XML而不是foreach
- 它使一切变得更加简单。我还建议您尽可能使用var doc = XDocument.Load("Settings.xml");
foreach (var element in doc.Root.Elements("OtherFolderSettings))
{
listBox1.Items.Add(element.Value);
}
循环:
using
(哦,并使用{{1}}语句干净地关闭资源......)