XmlNode.ReplaceChild жалуется, что узел, который я пытаюсь удалить, не является дочерним, несмотря на то, что я попал на узел через ParentNode - PullRequest
5 голосов
/ 19 декабря 2009

У меня есть простая функция, предназначенная для копирования одного раздела XML-документа в другой. Я хочу заменить один узел другим, поэтому ReplaceChild кажется логичным выбором. Я продолжаю получать сообщение об ошибке «Ссылочный узел не является дочерним для этого узла». хоть. Это кажется странным, так как я нашел этот узел, сначала спросив родителя. Есть идеи, что я делаю не так?

    private static void KeepSection(XmlDocument newDoc, XmlDocument currentDoc, XmlNamespaceManager nsmgr, string path)
    {
        XmlNode section = currentDoc.SelectSingleNode(path, nsmgr);
        XmlNode newSection = newDoc.SelectSingleNode(path, nsmgr);
        if (newSection != null && section != null)
        {
            XmlNode parent = newSection.ParentNode;
            parent.ReplaceChild(newSection, newDoc.ImportNode(section, true));
        }
    }

Ответы [ 2 ]

7 голосов
/ 19 декабря 2009

Похоже, что у вас ReplaceChild измененные параметры:

public virtual XmlNode ReplaceChild(
    XmlNode newChild,
    XmlNode oldChild
)
0 голосов
/ 19 декабря 2009

На самом деле я был идиотом. Я получил параметры для ReplaceChild неправильно. Код должен был быть,

            parent.ReplaceChild(newDoc.ImportNode(section, true), newSection);

Извините за это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...