代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

为什么试图访问linq to xml中的属性会给我一个错误?

  •  2
  • Edward Tanguay  · 技术社区  · 16 年前

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

    部分回答:

    我知道如果我换衣服 X文档 X元素 ,然后它就工作了。有人能解释一下吗 为什么? ?

    2 回复  |  直到 16 年前
        1
  •  4
  •   bruno conde    16 年前

    您正在访问的子元素 xdoc 那是不存在的。尝试降低一个级别:

    XElement element = xdoc.Element("employee").Element("firstName");
    

    XElement element = xdoc.Descendants("firstName").FirstOrDefault();
    
        2
  •  2
  •   Marc    16 年前

    this 关于原因。它明确地解释了他们的“习惯用法”,解释了当没有找到名字时,他们为什么感觉返回一个空元素是有益的。