1

我是.net 初学者。在问这里之前,我已经浏览了很多网站。我收到错误 - “对象引用未设置为对象的实例。” .这个错误通常发生在任何控件中有空值但在我的情况下每个控件都有一些文本,那么为什么会出现这个错误?这是我的xml 文件

cmbProduct        --> combobox 
txtNewBrand       --> textBox
txtUpdateQuantity --> textBox
txtUpdatePrice    --> textBox

我尝试了以下代码:

按钮点击

XElement doc = XElement.Load(@"..\..\stock.xml");
var newElement = new XElement("items",
                               new XElement("productname", cmbProduct.Text),
                               new XElement("brandname", txtNewBrand.Text),
                               new XElement("quantity", txtUpdateQuantity.Text),
                               new XElement("price", txtUpdatePrice.Text));
 /*ERROR*/      doc.Element("stock").Add(newElement);
                doc.Save(xpath);
                MessageBox.Show("updated successfully");

编辑 :

而不是使用

XElement doc = XElement.Load(@"..\..\stock.xml");

我用了

var doc = XDocument.Load(@"..\..\stock.xml");

问题解决了。为什么这样?

4

4 回答 4

1

找不到eather doc.Element("stock") 并且为NULL 或doc 为NULL

于 2012-10-09T08:30:03.643 回答
1

鉴于代码有限,要查看您添加和/或断言存在的内容并不容易。尝试在错误上方添加这两行,错误消息将指示故障。

Debug.Assert(doc != null, "Can not operate without a valid instance of 'doc'");
Debug.Assert(doc.Element("stock") != null, "Need the stock element to add to!");

您可能需要包括“使用 System.Diagnostics;” 在文件的顶部。

于 2012-10-09T08:45:06.590 回答
1

我猜你没有doc用现有的 XML 预加载,如果是这样,就不会有任何stock元素开始。

尝试添加这个

if (doc.Element("stock") == null)
{
    doc.Add(new XElement("stock"));
}

doc.Element("stock").Add(newElement);
于 2012-10-09T08:58:41.410 回答
1

您收到异常是因为:

doc.Element("stock").Add(newElement);

stock是根节点,doc.Element("stock")返回null。你实际上想要做的是在你的 xml 中添加一个项目。尝试以下操作:

doc.Add(newElement);

这将为您提供所需的结果。

于 2012-10-09T09:22:13.217 回答