XML的节点重命名的问题,请各位赐教

xthmpro_cn 2004-07-30 07:01:02
IXMLDOMNode.NodeName是只读的,各位有什么办法改变这个NodeName的值,即:
<Caption>标题</Caption>改变"Caption"为其他的值变成如:<Hint>标题</Hint>
分不够再加!
...全文
167 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xthmpro_cn 2004-08-02
  • 打赏
  • 举报
回复
//各位还是不要克隆,看看下面,谢谢上面的两位星星!
procedure ReNameNodeByPathString(XMLDOC: IXMLDOMDocument; PathStr, NewName: String);
var
i: Integer;
Attributes: IXMLDOMNamedNodeMap;
SpecXMLNode, NewXMLNode: IXMLDOMNode;
begin
SpecXMLNode:=XMLDOC.selectSingleNode(PathStr);
if SpecXMLNode <> nil then
begin
NewXMLNode:=XMLDOC.createNode(NODE_ELEMENT,NewName,'');

Attributes:=(SpecXMLNode as IXMLDOMElement).attributes;
for i := 0 to Attributes.length - 1 do
(NewXMLNode as IXMLDOMElement).setAttribute(Attributes.item[i].nodeName,Attributes.item[i].nodeValue);

SpecXMLNode:=SpecXMLNode.parentNode.replaceChild(NewXMLNode,SpecXMLNode);
while SpecXMLNode.childNodes.length <> 0 do
NewXMLNode.appendChild(SpecXMLNode.removeChild(SpecXMLNode.childNodes.item[0]));

SpecXMLNode:=nil;
end;
LanguageTrans.Modify:=True;
end;
ly_liuyang 2004-07-30
  • 打赏
  • 举报
回复
子节点克隆用IXMLNode的CloneNode方法!!

xns:=srcxn.CloneNode(true); // copy node to save node info
srcxn.ParentNode.ChildNodes.Remove(oldxn); // delete the node
targetxn.ChildNodes.Add(xns); // add node to target node
Eastunfail 2004-07-30
  • 打赏
  • 举报
回复
直接Append子节点试试
xthmpro_cn 2004-07-30
  • 打赏
  • 举报
回复
子节点怎么办啊,我把子节点克隆出来,Append不进去啊!各位还是多多帮忙!
ly_liuyang 2004-07-30
  • 打赏
  • 举报
回复
没的,生成一个新的,在那里用新名就是了

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧