根据我的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();

10-06 10:04