C#& XML - 未将对象引用设置为对象的实例

时间:2012-04-17 04:36:41

标签: c# asp.net xml visual-studio-2010

晚安StackOverFlowers,
我最近通过Visual Studio 2010开始使用XML进行编码。我遇到了似乎是一个简单的解决方案,但解决方案让我感到震惊。我没有设置对象引用的错误,但我没有看到我没有设置。 (这里有错误:http://i.imgur.com/CVaxY.png

我的代码隐藏:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;

public partial class _Default : System.Web.UI.Page
  {
    int intDVDID;
    XmlDocument myXmlDocument = new XmlDocument();
    XmlNode rootNode;
    XmlNode selectedDVD;

public void Page_Load(object Src, EventArgs E)
{
    intDVDID = Convert.ToInt32(Request.QueryString["id"]);

    myXmlDocument.Load(Request.PhysicalApplicationPath + @"dvd.xml");
    rootNode = myXmlDocument.DocumentElement;
    selectedDVD = rootNode.ChildNodes[intDVDID - 1];
    if (!Page.IsPostBack)
    {
        rootNode.RemoveChild(selectedDVD);
        myXmlDocument.Save(Request.PhysicalApplicationPath + @"dvd.xml");
        lblMessage.Text = "You have successfully deleted the DVD";
    }
  }
}

这只是一个问题:

  int intDVDID = new intDVDID 

我知道通过阅读本文,你会想要在我缺乏经验和缺乏理解的情况下解决问题如何解决这个问题,但我很感激你的时间和耐心。

祝你好运, 劳拉:)

编辑: 这是我的XML:

<?xml version="1.0" encoding="utf-8" ?>
<!-- This XML document describes a DVD library -->
<library>
  <DVD id="1">
    <title>Breakfast at Tiffany's</title>
    <format>Movie</format>
    <genre>Classic</genre>
  </DVD>
  <DVD id="2">
    <title>Contact</title>
    <format>Movie</format>
    <genre>Science fiction</genre>
  </DVD>
  <DVD id="3">
    <title>Little Britain</title>
    <format>TV Series</format>
    <genre>Comedy</genre>
  </DVD>
</library>

2 个答案:

答案 0 :(得分:1)

看起来你的selectedDVD可能为空,请进行一些空检查以验证。

if(selectedDVD != null)
{
}

编辑:在评论中回答您的问题。这是一些示例代码。我扔了一个xpath,即使你的情况很简单,你可能想在将来使用它

string xml = "<xml><node id='1'></node><node id='2'></node></xml>";

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);           

//This is an xpath(This replaces your .DocumentElement.ChildNodes[index]
XmlNode desiredNode = xmlDoc.DocumentElement.SelectSingleNode("node[@id='1']");
if (desiredNode != null)
{
    xmlDoc.DocumentElement.RemoveChild(desiredNode);
}//if             

答案 1 :(得分:0)

<请确保您的查询字符串不为空,这可能会导致您正在进行的nullreferenceexception。

if(Request.QueryString["id"]!="")
{
    intDVDID = Convert.ToInt32(Request.QueryString["id"]);
}