运行应用程序时“对象引用未设置为对象的实例”错误

时间:2012-01-03 22:56:49

标签: c# .net sharepoint

我有这个代码,当用户点击按钮时,它应该将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); 
}

但是当我部署webpart并单击按钮时,我得到“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> 

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

object elementnull

attribute

element网址不存在

尝试类似......

var url = element.Attribute("URL");
string siteURL1;

if(url != null)
{
   siteURL1 = url.Value;
}

答案 2 :(得分:0)

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

答案 3 :(得分:0)

还有一些其他问题可能是错误的,这里有一个快速列表:

  1. 您的XML没有属性XML。
  2. 您的XML包含您未解析的命名空间信息
  3. 您的XML根元素不是您期望的那个
  4. 运行调试并查看您传递给Visit方法的元素。