Скажем, перебираю я узлы xml-дерева с помощью XPathNavigator
и встречаю узел, имя которого мне нужно изменить. Как это сделать? Напрямую не получится, да. Тут нужно создавать новый узел с нужным именем, копировать в него содержимое старого узла и заменять старый на новый. Я знаю, как это делать, используя XmlElement
, но не знаю, как из XPathNavigator
, установленного на нужный элемент, получить XmlElemnt
. Есть идеи?
Как изменить имя xml нода?
2
Новые ответы
2
Можно заменить имя нода прямо в тексте текущего узла. Конечно, это небезопасно, но как крайняя мера может подойти:
var currentNode = navigator.OuterXml;
currentNode = currentNode.Replace("oldNode", "newNode"); 1
navigator.ReplaceSelf(currentNode);
Для пущей безопасности в точке 1 можно использовать не глупый Replace
, а что-нибудь с регулярными выражениями.
Да, тоже пришел к этому мнению, полистав форумы. Лучшего решения не нашел. Странно.