簡體   English   中英

無法從xml元素填充列表框

[英]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++)

...其中folderListFolder_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM