Ну, первая проблема в том, что вызов 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);
}
}
}
Это отображает «Mozilla Firefox» с XML, который вы нам дали.
Параметры:
- Ваш настоящий XML действительно содержит элемент без атрибута
title
- Возможно
PackageTitle
равно нулю?
Было бы полезно, если бы вы могли создать короткую, но полную программу, демонстрирующую проблему . В идеале следует избегать использования графического интерфейса - здесь я не вижу ничего, что, вероятно, связано с конкретным интерфейсом.
Если бы вы могли рассказать нам больше о PackageTitle
и о том, как он инициализируется, это тоже помогло бы. Как вы ожидаете, что он будет продолжать расширяться на столько элементов, сколько вы найдете? Или это массив, который инициализирован с большим размером, чем вы когда-либо ожидали найти элементы?