[英]Having trouble populating listbox from xml elements
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();
您的代碼無法正常工作的原因是您的循環是:
for (var i = 0; i <= folderList.Count; i++)
...其中folderList
是Folder_Settings
元素的列表。 其中只有一個,因此您要迭代兩次。 您實際上不使用folderList[i]
是一項好工作,因為否則您在第二次迭代中會超出范圍。 像這樣的循環應該總是使用<
而不是<=
。
但是,我強烈建議使用LINQ to XML而不是XmlDocument
它使一切變得更加簡單。 我還建議您也盡可能使用foreach
循環:
var doc = XDocument.Load("Settings.xml");
foreach (var element in doc.Root.Elements("OtherFolderSettings))
{
listBox1.Items.Add(element.Value);
}
(哦,並使用using
語句干凈地關閉資源...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.