NullReferenceException将XElement添加到XDocument

时间:2014-06-05 19:53:39

标签: c# linq nullreferenceexception

我尝试使用LINQ将动态元素添加到根目录,之前它正在运行。但它返回"对象引用未设置为对象的实例。"。 它只能手动创建新的XElement实例。

try  
{
   XDocument xdoc = XDocument.Load(_documentName);
   XElement _newElements = new XElement(_rowName);

   foreach(string s in _commaSeparatedNameValues)
   {
       _newElements.Add(new XElement( s.Split(',')[0], s.Split(',')[1]));
   }

   xdoc.Element(_rowName).Add(_newElements);
   xdoc.Save(_documentName);
}
catch(Exception ex)
{
   string s = ex.Message;
}

1 个答案:

答案 0 :(得分:1)

XDocument xdoc = XDocument.Load(_documentName);       
XElement _newElements = new XElement(_rowName);
...
xdoc.Element(_rowName).Add(_newElements);

您永远不会将_newElements添加到xdoc,因此xdoc.Element(_rowName)将为null
而另一方面,它本来就是试图为自己添加一个元素。

修复,未经测试:

//xdoc.Element(_rowName).Add(_newElements);
xdoc.Add(_newElements);

或更可能:

xdoc.Root.Add(_newElements);