2011-05-14 195 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