2011-05-14 234 views
0

我非常接近。如果ASP TEXT BOX的姓氏與XML「條目」匹配,我要求從XML FILE中刪除條目。從XML中刪除節點

這是按鈕腳本。請把XmlNode的電話簿行注:

protected void deletion_Click(object sender, EventArgs e) 
{ 
    XmlDocument document = new XmlDocument(); 
    document.Load(Server.MapPath("~/App_Data/PhoneBook.xml")); 

    XmlElement root = document.DocumentElement; 

XmlNode PhoneBook = document.SelectSingleNode("//event[@lastName='" + txtLastName.Text + "']"); 
    PhoneBook.ParentNode.RemoveChild(PhoneBook); 

    document.Save(Server.MapPath("~/App_Data/PhoneBook.xml")); 
    GridView1.DataBind(); 
} 

我不斷收到錯誤,我猜我沒有選擇使用的SelectSingleNode XML文件正確的節點?

+0

你會得到什麼樣的錯誤?你能複製粘貼錯誤信息嗎?或者只是結果與你期望的不同?你能指望什麼? – Howard 2011-05-14 17:45:39

+0

使用PhoneBook.ParentNode.RemoveChild(PhoneBook)獲取錯誤; – user734699 2011-05-14 17:54:58

回答

3

試試這個:

XmlNode PhoneBook = document.SelectSingleNode("/phoneBook/entry[lastName/text()='" + txtLastName.Text + "']"); 

你嘗試在element過濾器,而不是一個attribute,所以你不能使用@跡象。

這個XPath返回第二entry元素(我測試了它,它的工作原理):

/phoneBook/entry[lastName/text()='twoL'] 
+0

我收到下一行的錯誤:對象引用未設置爲對象的實例。 PhoneBook.ParentNode.RemoveChild(電話簿); – user734699 2011-05-14 17:53:59

+0

這是因爲你的XPath不正確導致'PhoneBook'節點爲'null'。你用姓氏測試什麼價值? – 2011-05-14 17:57:27

+0

twoL和我試過oneL – user734699 2011-05-14 18:02:34