对象引用未设置为对象的实例;运行应用程序时出错

本文关键字:运行 应用程序 出错 实例 设置 对象 对象引用 | 更新日期: 2023-09-27 18:19:17

我有这段代码,它应该在用户单击按钮时将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> 

对象引用未设置为对象的实例;运行应用程序时出错

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

我认为有两件事是错的…

object elementnull

elementattribute URL不存在

试试…

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

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

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

  1. 你的XML没有XML属性
  2. 您的XML包含未解析的名称空间信息
  3. 你的XML根元素不是你想要的

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