0

こんばんは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>
4

2 に答える 2

1

選択したDVDがnullになる可能性があるようです。確認するために、nullチェックをいくつか入れてください。

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             
于 2012-04-17T04:45:08.107 に答える
0

クエリ文字列が空でないことを確認してください。これにより、取得している参照例外がnullになる可能性があります。

if(Request.QueryString["id"]!="")
{
    intDVDID = Convert.ToInt32(Request.QueryString["id"]);
}
于 2012-04-17T05:03:02.667 に答える