根据我的LINQ书,这个稍作改动的示例应该可以工作。
为什么会告诉我“对象引用未设置为对象的实例”?
using System;
using System.Xml.Linq;
namespace TestNoAttribute
{
class Program
{
static void Main(string[] args)
{
XDocument xdoc = new XDocument(
new XElement("employee",
new XAttribute("id", "23"),
new XElement("firstName", new XAttribute("display", "true"), "Jim"),
new XElement("lastName", new XAttribute("display", "false"), "Smith")));
XElement element = xdoc.Element("firstName");
XAttribute attribute = element.Attribute("display"); //error
Console.WriteLine(xdoc);
Console.ReadLine();
}
}
}
部分答案:
我想出如果我将XDocument更改为XElement,那么它可以工作。谁能解释为什么?
最佳答案
您正在访问的xdoc
子元素不存在。尝试下一级:
XElement element = xdoc.Element("employee").Element("firstName");
要么
XElement element = xdoc.Descendants("firstName").FirstOrDefault();