2013-08-30 4 views
1

Доброе утро.C# xmlAttribute.Value Ссылка на объект не установлена ​​в экземпляр объекта

Вскоре.

Использование XmlDocument Я programmaticaly создания документа, который должен выглядеть следующим образом (пример):

<report> 
    <header version="1" reportDate="2013-08-27" salesDate="2013-08-26"/> 
    <data> 
     <companies> 
      <company id="ABCD"> 
       <customers> 
        <customer id="100000" storeId="AA"/> 
        <customer id="100001" storeId="AB"/> 
        <customer id="100002" storeId="AC"/> 
       </customers> 
      </company> 
     </companies> 
    </data> 
</report> 

мне нужно, чтобы захватить данные от нескольких DataGridView «S поэтому Еогеасп Петли интенсивно используются.

Что я не могу работать, ни найти ответ (всегда что-то о чтении XML, не Создание) не поэтому код, приведенный ниже бросает мне:

ссылка на объект не указывает на экземпляр объект

Это образец кода я использую:

[...] 

XmlNode customersNode = doc.CreateElement("customers"); 
companyNode.AppendChild(customersNode); 

XmlNode customerNode; 
XmlAttribute customerAttribute; 

foreach (DataGridViewRow row in dgvCustomers.Rows) 
{ 
    customerNode = doc.CreateElement("customer"); 

    customerAttribute = doc.CreateAttribute("id"); 
    customerAttribute.Value = row.Cells[0].Value.ToString(); 
    // 
    // __HERE__ is the problem (or a line above) 
    // 
    customerNode.Attributes.Append(customerAttribute); 

    customerAttribute = doc.CreateAttribute("storeId"); 
    customerAttribute.Value = row.Cells[1].Value.ToString(); 
    customerNode.Attributes.Append(customerAttribute); 

    customersNode.AppendChild(customerNode); 
} 

[...and so on...] 

Также

customerNode.Attributes.Append(customerAttribute); 

подчеркнут (редактор VS2010) с этим наконечником:

Possible 'System.NullReferenceException' 

но я полагаю, это является причиной проблемы, описанной выше?

Любая поддержка приветствуется и благодарит заранее за ваше время и долю знаний.

С уважением!

+0

Вы уверены, что 'row.Cells [0]' имеет значение (не nul)? check with debug –

+0

Quick row.Cells [0] .Узнайте это и посмотрите, есть ли это значение – Rex

+0

См. мой последний комментарий. Спасибо! –

ответ

1

Я не попытался запустить код, показанный, но вы можете обнаружить, что упрощает это делает его труднее получить неправильно:

XmlElement customerNode; // <==== note this is XmlElement, not XmlNode 
XmlAttribute customerAttribute; 

foreach (DataGridViewRow row in dgvCustomers.Rows) 
{ 
    customerNode = doc.CreateElement("customer"); 
    customerNode.SetAttribute("id", row.Cells[0].Value.ToString()); 
    customerNode.SetAttribute("storeId", row.Cells[1].Value.ToString()); 

    customersNode.AppendChild(customerNode); 
} 

Вы также можете проверить, что этот вопрос не является на самом деле, что row.Cells[0].Value.ToString() или row.Cells[1].Value.ToString() выбрасывает исключение.

+0

ОК, получилось, метод загрузки данных в DGV добавляет пустую строку ниже последней строки, содержащей данные. Это бросает исключение :) Добавлена ​​проверка, работает как шарм, спасибо всем вам! –

Смежные вопросы