Xml属性未显示在ListBox上 - C#

时间:2009-12-05 19:32:38

标签: c# xml listview listbox xmldocument

每当尝试添加包标题信息和其他属性但是存在属性并且选择了正确的包时,我就会得到一个空引用异常

下面是代码:

private void categorylist_listview_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            XmlDocument LoadPackageList = new XmlDocument();
            //Removes the text "Select A Category" and refrehes the form
            packagelist_listbox.Items.Remove(SelectaCategory_listbox);

            if (categorylist_listview.SelectedItem == WWW_listviewitem)
            {
                LoadPackageList.Load("www.xml");
                XmlNodeList WWWPackageList = LoadPackageList.SelectNodes("/Packages/*");
                int countthenodes = 0;
                foreach (XmlNode WWWPackages in WWWPackageList)
                {
                    //Cycles through all the packages and assings them to a string then adds it to the packagelist
                    countthenodes++;
                    PackageTitle[countthenodes] = WWWPackages.Attributes["title"].ToString();
                    PackageInfo[countthenodes] = WWWPackages.Attributes["info"].ToString();
                    PackageDownloadUrl[countthenodes] = WWWPackages.Attributes["downloadurl"].ToString();
                    PackageTags[countthenodes] = WWWPackages.Attributes["tags"].ToString();
                    packagelist_listbox.Items.Add(PackageTitle[countthenodes]);
                }
                Refresh(packagelist_listbox);

            }
        }

它在PackageTitle错误[countthenodes] = WWWPackages.Attributes [“title”]。ToString();

XML文件:

<Packages>
  <Firefox title="Mozilla Firefox" tags="www firefox web browser mozilla" info="http://google.com" downloadurl="http://firefox.com"></Firefox>


</Packages>

声明变量

        public string[] PackageTags;
        public string[] PackageTitle;
        public string[] PackageInfo;
        public string[] PackageDownloadUrl;

在文件的最开头

1 个答案:

答案 0 :(得分:2)

嗯,第一个问题是在ToString()上调用XmlAttribute不会做你想要的。您应该使用Value属性。但是,我不相信这会导致NullReferenceException,除非数据不像你展示的那样。这是一个简短但完整的程序,运行正常:

using System;
using System.Xml;

class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("test.xml");        
        XmlNodeList list = doc.SelectNodes("/Packages/*");
        foreach (XmlNode node in list)
        {
            Console.WriteLine(node.Attributes["title"].Value);
        }
    }
}

用你给我们的XML显示“Mozilla Firefox”。

选项:

  • 您的真实XML实际上包含一个没有title属性的元素
  • 也许PackageTitle为空?

如果你能产生short but complete program demonstrating the problem会有所帮助。理想情况下,它应该避免使用GUI - 我在这里看不到任何可能是GUI特定的东西。

如果您可以告诉我们更多有关PackageTitle以及如何初始化的信息,那也会有所帮助。您如何期望它能够随着您找到的那么多元素继续扩展?或者它是一个数组,它被初始化为比您期望找到的元素更大的尺寸?