переименовать получилось только вот так
- Код: Выделить всё
// создадим новую ноду с нужным именем
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 секунды:причём на заглавную букву Ц такой реакции нет - нода создаётся.