【问题标题】:"Object reference not set to an instance of an object" error when running app运行应用程序时出现“对象引用未设置为对象的实例”错误
【发布时间】:2012-02-01 22:32:21
【问题描述】:

我有这段代码应该在用户单击按钮时将 XML 文件的属性加载到字符串变量:

    public void Button1_Click(object sender, EventArgs e)
    {
        XDocument doc = XDocument.Load("C:/Structure.xml");
        Visit(doc.Root);


    }

    public static void Visit(XElement element)
    {

        string siteURL1 = element.Attribute("URL").Value;
        string siteTitle1 = element.Attribute("siteTitle").Value;
        string siteDescription1 = element.Attribute("siteDescription").Value;
        string siteTemplate = element.Attribute("siteTemplate").Value;
        string name = element.Attribute("type").Value;
        Execute(name, siteURL1, siteTitle1, siteDescription1, siteTemplate); 
}

但是,当我部署 Web 部件并单击按钮时,我收到“用户代码未处理 NullreferenceException / 对象引用未设置为对象实例”错误。上:

  string siteURL1 = element.Attribute("URL").Value;" 

知道我做错了什么吗?

这个结构看起来是这样的:

<root>
  <level1 name="level1A"
          type="Private"
          template="3 
          siteTitle="Private"
          siteDescription="Private Site"  
          URL"private">
    <level2 name="level2A">
      <level3 name="level3A">
        <level4 name="level4A">
          <level5 name="level5A">
            <level6 name="level6A">
              <level7 name="level7A">
                <level8 name="level8A"></level8>
              </level7>
            </level6>
          </level5>
        </level4>
      </level3>
    </level2>
  </level1>
</root> 

【问题讨论】:

  • 请显示 Structure.xml 的内容
  • 显示您的 xml 文件示例以获得更好的帮助。
  • 我刚刚添加了我的 XML 示例。它与此类似,但包含更多元素。有些元素具有 URL 属性,有些则没有。这会导致问题吗?

标签: c# .net sharepoint


【解决方案1】:

element.Attribute("URL") 为空。您将需要检查您的数据 (XML) 以了解原因。您的代码假定某种结构似乎不正确。仔细查看传入的元素。

【讨论】:

    【解决方案2】:

    我认为是错误的两件事之一......

    object element 要么是 null

    attribute URL 不存在该element

    尝试类似...

    var url = element.Attribute("URL");
    string siteURL1;
    
    if(url != null)
    {
       siteURL1 = url.Value;
    }
    

    【讨论】:

    • 有些元素有 URL 属性,有些没有。这是问题的根源吗?
    • 是的,检查一下它是否为空,检查我更新的答案。
    【解决方案3】:

    进行一些验证以确保docXDocument doc = XDocument.Load("C:/Structure.xml"); 之后不为空。部署后您是否有权访问该位置的 XML 文件?

    【讨论】:

      【解决方案4】:

      还有其他一些可能出错的地方,这里有一个快速列表:

      1. 您的 XML 没有 XML 属性。
      2. 您的 XML 包含您未解析的命名空间信息
      3. 您的 XML 根元素不是您所期望的

      运行调试并查看您传递给 Visit 方法的元素。

      【讨论】:

        猜你喜欢
        • 2014-06-04
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 2012-08-31
        • 2011-11-21
        • 2012-10-01
        相关资源
        最近更新 更多