У меня проблемы с моим приложением C#. Он может только получить атрибуты первого узла, а затем не может получить атрибуты следующего узла.xml атрибуты не обнаружены
XML-в этом формате ..
<ALLPRODUCTS>
<PRODUCT ITEM="1">
<QUANTITY>5</QUANTITY>
</PRODUCT>
<PRODUCT ITEM="2">
<QUANTITY>6</QUANTITY>
</PRODUCT>....
Приложение получает первый номер продукта, как 1 и имеет величину 5 ... но после того, что он просто дает количества и говорит пункт число - null. Вот код im, использующий ...
while (reader.Read())
{
if (reader.Name.Equals("PRODUCT"))
{
String id;
String qty;
try
{
id = reader.GetAttribute("ITEM");
reader.ReadToFollowing("QUANTITY");
qty = reader.ReadInnerXml();
if (qty.Equals("0"))
{
oos++;
}
else
{
inStock++;
}
status.Refresh();
stockLevelList.Add(id, qty);
}
catch (Exception e)
{
MessageBox.Show(e.Message, e.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Может кто-нибудь предложить, почему продукты после первого получают null как id?
Если ваш XML не является ОГРОМНЫМ (т. Е. Больше, чем 25 Мб), вам, скорее всего, лучше использовать методы DOM, такие как XmlDocument и SelectNodes для такого рода операций. –
Я думаю, что вы хотите сделать 'reader.MoveToNextAttribute()', а затем проверить имя, чтобы увидеть, является ли это 'ITEM'. Если это так, вы можете вызвать 'reader.Value', чтобы получить его. Для этого, однако, я бы, вероятно, просто использовал сериализацию XML с некоторыми POCO вместо того, чтобы сражаться с XML Reader. Это может быть довольно PITA, чтобы развиваться против. – TyCobb
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (http://meta.stackexchange.com/questions/19190/), где консенсус «нет, они не должны». –