переименовать получилось только вот так
- Код: Выделить всё
                   // создадим новую ноду с нужным именем
                  NewNode := FDoc.CreateElement(Buf.Name);
                  // создадим ноду с текстом
                  TextNode := FDoc.CreateTextNode(Buf.Value);
                  NewNode.AppendChild(TextNode);
                  // скопируем все атрибуты
                  for a:=0 to Node.Attributes.Length-1 do
                    TDOMElement(NewNode).SetAttribute(
                      Node.Attributes[a].NodeName,
                      Node.Attributes[a].NodeValue
                    );
                  // перепишем в новую ноду все вложенные ноды полностью с ветвями
                  for i:=0 to Node.ChildNodes.Count-1 do begin
                      NewNode.AppendChild(Node.ChildNodes[i].CloneNode(true));
                      // обновим ссылки в дереве TreeView
                      TreeView.BeginUpdate;
                      for j:=0 to TreeView.Items.Count-1 do
                        if TreeView.Items[j].Data=Pointer(Node.ChildNodes[i]) then
                          TreeView.Items[j].Data:=NewNode.LastChild;
                      TreeView.EndUpdate;
                  end;
                  // получим родителя
                  ParNode:=Node.ParentNode;
                  // добавим новую ветвь в дерево
                  if ParNode=nil then begin
                    // т.к. корень может быть только один - сначала удалим его,
                    // а уже потом добавим новый
                    TDOMElement(Node).Destroy;
                    FDoc.AppendChild(NewNode);
                  end
                  else begin
                    // если элемент не корневой - можно временно сохранить старую ноду,
                    // добавить перед ней новую, а затем удалить старую
                    // это предотвратит смещение элемента в дереве TreeView
                    TDOMElement(Node.ParentNode).InsertBefore(NewNode,Node);
                    TDOMElement(Node).Destroy;
                  end;
                  // обновим дерево
                  with TreeView do begin
                    BeginUpdate;
                    Selected.Text:=TreeName(NewNode);
                    Selected.Data:=NewNode;
                    EndUpdate;
                  end;                                               
теперь проблема стала в другом - не получается ввести определенные теги на русском языке... причем другие слова на русском запросто вставляются... проведу более подробный анализ...
Добавлено спустя 13 минут 24 секунды:почему-то упорно отказывается записывать новый тег под названием "цена"... что за магическое слово непонятно...  
Добавлено спустя 7 минут 10 секунд:ошибка с DOMDocument.CreateElement проявляется если в NodeName первой стоит буква "ц", в середине или конце слова - нода создаётся нормально, что за?..
Добавлено спустя 2 минуты 44 секунды:причём на заглавную букву Ц такой реакции нет - нода создаётся.