关于.xml结点的修改《难啊》,该如何解决
关于.xml结点的修改《难啊》
有以.xml为扩展名的文件如下
<a>
<xml>
</xml>
</a>
现在我想把结点xml改为 a.xml
即要修改后的结果为
<a>
<a.xml>
</a.xml>
</a>
因此我做了相应的操作
var XML:IXMLDocument;
XMLNode:IXMLNode;
begin
XML:=TXMLDocument.Create( ' ');
XML.LoadFromFile(FilePath+FileName);
XML.Active := True;
XMLNode:=XML.ChildNodes.Get(0);//取得根结点
XMLNode:=XMLNode.ChildNodes.Get(0);//取得了想要操作的结点。
XMLNode.NodeName:= 'a.xml ';
XML.SaveToFile(FilePath+FileName);
XML.Active := False;
end;
按本意这样的操作是可以实现想要的结果,可是问题就在于这句:XMLNode.NodeName:= 'a.xml '; NodeName属性是只读的 。
郁闷 !!!!!
我该如何修改 这个结点名字呢?
------解决方案--------------------
快2年没来这个论坛了,刚回来看看就糟受打击,还是写点代码给你看看吧.
不能修改名字,考虑变换一下,建立一个新的名字的结点,把原来的拷贝过去就可以了。
procedure TForm1.Button1Click(Sender: TObject);
var
XML:IXMLDocument;
XMLNode,XMLNode2,XMLChildNode:IXMLNode;
i:integer;
begin
XML:=TXMLDocument.Create( ' ');
XML.LoadFromFile(FilePath+FileName);
XML.Active := True;
XMLNode:=XML.ChildNodes.Get(0);//取得根结点
XMLNode2:=XMLNode.AddChild( 'a.xml ');
XMLNode:=XMLNode.ChildNodes.Get(0);//取得了想要操作的结点。
for i:=0 to XMLNode.ChildNodes.Count-1 do
begin
XMLChildNode:=XMLNode.ChildNodes.Get(i).CloneNode(true);
XMLNode2.ChildNodes.Add(XMLChildNode);
end;
XML.ChildNodes.Get(0).ChildNodes.Delete(0);//删除原来的节点
XML.SaveToFile(FilePath+FileName);
XML.Active := False;
end;
有以.xml为扩展名的文件如下
<a>
<xml>
</xml>
</a>
现在我想把结点xml改为 a.xml
即要修改后的结果为
<a>
<a.xml>
</a.xml>
</a>
因此我做了相应的操作
var XML:IXMLDocument;
XMLNode:IXMLNode;
begin
XML:=TXMLDocument.Create( ' ');
XML.LoadFromFile(FilePath+FileName);
XML.Active := True;
XMLNode:=XML.ChildNodes.Get(0);//取得根结点
XMLNode:=XMLNode.ChildNodes.Get(0);//取得了想要操作的结点。
XMLNode.NodeName:= 'a.xml ';
XML.SaveToFile(FilePath+FileName);
XML.Active := False;
end;
按本意这样的操作是可以实现想要的结果,可是问题就在于这句:XMLNode.NodeName:= 'a.xml '; NodeName属性是只读的 。
郁闷 !!!!!
我该如何修改 这个结点名字呢?
------解决方案--------------------
快2年没来这个论坛了,刚回来看看就糟受打击,还是写点代码给你看看吧.
不能修改名字,考虑变换一下,建立一个新的名字的结点,把原来的拷贝过去就可以了。
procedure TForm1.Button1Click(Sender: TObject);
var
XML:IXMLDocument;
XMLNode,XMLNode2,XMLChildNode:IXMLNode;
i:integer;
begin
XML:=TXMLDocument.Create( ' ');
XML.LoadFromFile(FilePath+FileName);
XML.Active := True;
XMLNode:=XML.ChildNodes.Get(0);//取得根结点
XMLNode2:=XMLNode.AddChild( 'a.xml ');
XMLNode:=XMLNode.ChildNodes.Get(0);//取得了想要操作的结点。
for i:=0 to XMLNode.ChildNodes.Count-1 do
begin
XMLChildNode:=XMLNode.ChildNodes.Get(i).CloneNode(true);
XMLNode2.ChildNodes.Add(XMLChildNode);
end;
XML.ChildNodes.Get(0).ChildNodes.Delete(0);//删除原来的节点
XML.SaveToFile(FilePath+FileName);
XML.Active := False;
end;