Csharp XmlNode выбрал ошибку одного узла - PullRequest
0 голосов
/ 24 октября 2011

Я пытаюсь удалить элемент с определенным соответствием между значением из текстового поля и из моего файла 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>"

1 Ответ

0 голосов
/ 24 октября 2011

Переменная xnode указывает уже на элемент URL .Просто пропустите второй запрос xpath:

string x = xnode.InnerText.ToString();

Но это означает, что вам нужно обновить часть кода удаления, поскольку узел xnode не указывает на элемент MyFavourite :

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