我试图保存一个word
和一个boolean
值,我在一个记录数组中,到一个XML文档。这是我的代码:
procedure AddArrayToXMLFile(const Array : array of TKeycodeRecord; const Name : string);
var
XMLFile : IXMLDocument;
NameNode, ArrayFieldNode: IXMLNode;
i : integer;
begin
if FileExists(ArrayXMLFilePath) then
begin
XMLFile := LoadXMLDocument(ArrayXMLFilePath);
end
else
begin
XMLFile := NewXMLDocument;
NameNode := XMLFile.AddChild(Name);
ArrayFieldNode := NameNode.AddChild('child');
end;
for i := 0 to Length(Array) - 1 do
begin
ArrayFieldNode.Attributes['keycode'] := Array[i].keycode;
ArrayFieldNode.Attributes['shiftState'] := Array[i].shiftState;
end;
XMLFile.SaveToFile(ArrayXMLFilePath);
end;
字符串
结果是这样的:
<?xml version="1.0"?>
<TestName><child keycode="48" shiftState="false"/></TestName>
型
这个过程只保存数组的最后一个条目,这让我相信for loop
只改变了第一个条目的值,而不是向XML文档添加更多的值。想要的结果看起来像这样,但是有更多的条目:
<?xml version="1.0"?>
<TestName><child keycode="52" shiftState="false"/></TestName>
<TestName><child keycode="70" shiftState="true"/></TestName>
<TestName><child keycode="75" shiftState="false"/></TestName>
<TestName><child keycode="49" shiftState="false"/></TestName>
<TestName><child keycode="48" shiftState="false"/></TestName>
型
或者像这样:
<?xml version="1.0"?>
<TestName><child keycode="48" shiftState="false"/><child keycode="49" shiftState="false"/><child keycode="48" shiftState="false"/>
型
1条答案
按热度按时间s4n0splo1#
需要在for循环中添加节点NameNode和ArrayFieldNode,如下所示:
字符串
你所做的就是添加一个节点,然后在循环中,在每次迭代中更改同一节点的属性。