每当尝试添加包标题信息和其他属性但是存在属性并且选择了正确的包时,我就会得到一个空引用异常
下面是代码:
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;
在文件的最开头
答案 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”。
选项:
title
属性的元素PackageTitle
为空?如果你能产生short but complete program demonstrating the problem会有所帮助。理想情况下,它应该避免使用GUI - 我在这里看不到任何可能是GUI特定的东西。
如果您可以告诉我们更多有关PackageTitle
以及如何初始化的信息,那也会有所帮助。您如何期望它能够随着您找到的那么多元素继续扩展?或者它是一个数组,它被初始化为比您期望找到的元素更大的尺寸?