2012-04-17 100 views
0

Good Evening StackOverFlowers,
我最近開始通過Visual Studio 2010編寫XML。我遇到了似乎是一個簡單的解決方案,但解決方案逃避我。我沒有設置對象引用的錯誤,但是我沒有看到我沒有設置的東西。 (錯誤的位置:http://i.imgur.com/CVaxY.pngC#&XML - 對象引用未設置爲對象的實例

我隱藏:

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> 
+0

「dvd.xml」是什麼樣的? – climbage 2012-04-17 04:41:24

+0

已編輯添加XML。謝謝你的問題Climbage! – 2012-04-17 04:46:04

+0

當你得到這個錯誤時,'id'的價值是什麼? – climbage 2012-04-17 04:56:48

回答

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    
+0

謝謝你。我現在要測試這個。我感謝你的耐心。 – 2012-04-17 04:46:19

+0

好的,所以我彈出了一些空檢查,我仍然得到相同的結果。在使自己看起來更可笑的變化比我已經有過的更愚蠢...做一個空檢查,我只是這樣做嗎?: 'if(selectedDVD!= null) { selectedDVD = rootNode.ChildNodes [ intDVDID - 1]; }' – 2012-04-17 04:53:36

+0

非常感謝Brian。我真的很感謝幫助。你是個明星! – 2012-04-17 05:10:20

0

Pleaase確保您的查詢字符串不爲空,否則可能會導致空引用exeption你是葛亭。

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

非常感謝你冷冷的告訴你!你的幫助太棒了。幫助我解決了一些問題。非常感激! – 2012-04-17 05:10:56

相關問題