Вот код который использовал в делфи:
- Код: Выделить всё
procedure TList.List2XML(ur:string);
var
XMLDoc : TXMLDocument;
iNode : IXMLNode;
i:integer;
procedure ProcessTreeItem(
i:integer;
iNode : IXMLNode);
var
cNode : IXMLNode;
begin
cNode := iNode.AddChild('item');
cNode.Attributes['name'] := EncodeText(indexes[i]);
cNode.Attributes['Items'] := EncodeText(Items[i]);
end; (*ProcessTreeItem*)
begin
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.Active := True;
iNode := XMLDoc.AddChild('Base2xml');
iNode.Attributes['Base'] := 'MyListBaseXML';
i:=0;
while i <> indexes.Count do
begin
ProcessTreeItem (i, iNode);
inc(i);
end;
XMLDoc.SaveToFile(ur);
XMLDoc := nil;
end; (* Tree2XML *)
procedure TList.XML2List(XMLDoc: TXMLDocument; ur:string);
var
iNode : IXMLNode;
i:integer;
procedure ProcessNode(
Node : IXMLNode);
var
cNode : IXMLNode;
begin
if Node = nil then Exit;
with Node do
begin
indexes.Add(DecodeText(Attributes['name']));
items.Add(DecodeText(Attributes['Items']));
end;
end; (*ProcessNode*)
begin
i:=0;
indexes.Clear;
Items.Clear;
XMLDoc.FileName := ur;
XMLDoc.Active := True;
if XMLDoc = nil then exit;
iNode := XMLDoc.DocumentElement.ChildNodes.First;
while iNode <> nil do
begin
ProcessNode(iNode);
inc(i);
iNode := iNode.NextSibling;
end;
XMLDoc.Active := False;
end;
Кто может помочь с портированием?