Csharp XmlNode选择单节点错误

本文关键字:节点 错误 XmlNode 选择 单节点 Csharp | 更新日期: 2023-09-27 18:12:08

我试图从文本框和我的Xml文件之间的值删除一个特定匹配的元素。这是我的代码,我得到一个错误:

string x = xnode.SelectSingleNode("Url").InnerText.ToString();

       XmlDocument favourites = new XmlDocument();
        favourites.Load("Favourites.xml");

        foreach (XmlNode xnode in favourites.SelectNodes("Favourite/MyFavourite/Url"))
        {
            string x = xnode.SelectSingleNode("Url").InnerText.ToString();
            if (x == Url)
            {
                // xnode.ParentNode.ReplaceChild(newchild,oldChild);
                xnode.ParentNode.RemoveChild(xnode);
            }
        }

这是我的xml:

 "<?xml version="1.0" encoding="utf-8"?>
   <Favourite>
   <MyFavourite>
    <name>Haider</name>
    <Url>http://www.yahoo.com</Url>
  </MyFavourite>
  <MyFavourite>
    <name>Haider</name>
    <Url>http://www.gmail.com</Url>
  </MyFavourite>
  <MyFavourite>
    <name>Haider</name>
    <Url>http://www.naji.com</Url>
  </MyFavourite>
  <MyFavourite>
    <name>Haider</name>
    <Url>http://www.yahoo.com</Url>
  </MyFavourite>
  <MyFavourite>
    <name>Haider</name>
    <Url>http://www.yahoo.com</Url>
  </MyFavourite>
  <MyFavourite>
    <name>Haider</name>
    <Url>http://www.yahoo.com</Url>
  </MyFavourite>
</Favourite>"

Csharp XmlNode选择单节点错误

变量xnode已经指向URL元素。跳过第二个xpath查询:

string x = xnode.InnerText.ToString();

但是这意味着您必须更新代码的remove部分,因为xnode没有指向 myfavorite 元素:

XmlNode favoriteNode = xnode.ParentNode;
favoriteNode.ParentNode.RemoveChild(favoriteNode);