以这种格式实现xml文件创建的最快方法是什么:
<?xml version="1.0" encoding="Unicode" standalone="yes"?>
<A V1="string" V2=String >
<B>
<C V3="1" V4="1" V5="0"/>
</B>
<C V6="14.25" V7="0.2"/>
<D>
<E V8="1" V9="1" V10="2">
</E>
<E V8="2" V9="1" V10="2">
<F V11="a" V12="B">
<G>0</G>
</F>
</E>
<E V8="1" V9="1" V10="2">
</E>
<E V8="2" V9="1" V10="2">
<F V11="a" V12="B">
<G>0</G>
</F>
</E>
</D>
</A>
有很多e,我可以在迭代中生成。
然而,我似乎无法掌握Omni的最佳方法。
为了这么多常数而创建10到20个对象似乎太乱了。
你还能提一下如何设置编码来生成文件吗?
答案 0 :(得分:5)
这应该让你开始:
uses
OmniXML,
OmniXMLUtils;
procedure GetEAttr(var v8, v9, v10: integer);
begin
v8 := Random(10);
v9 := Random(10);
v10 := Random(10);
end;
procedure TForm54.FormCreate(Sender: TObject);
var
i : integer;
node1 : IXMLNode;
node2 : IXMLNode;
root : IXMLNode;
v10 : integer;
v8 : integer;
v9 : integer;
xmlDoc: IXMLDocument;
begin
xmlDoc := CreateXMLDoc;
xmlDoc.AppendChild(xmlDoc.CreateProcessingInstruction('xml', 'version="1.0" encoding="Unicode" standalone="yes"'));
root := AppendNode(xmlDoc, 'A');
SetNodeAttr(root, 'V1', 'string');
SetNodeAttr(root, 'V2', 'string');
node1 := AppendNode(root, 'B');
node2 := AppendNode(node1, 'C');
SetNodeAttr(node2, 'V3', '1');
SetNodeAttr(node2, 'V4', '1');
SetNodeAttr(node2, 'V5', '0');
node1 := AppendNode(root, 'C');
SetNodeAttr(node1, 'V6', '14.25');
SetNodeAttr(node1, 'V7', '0.2');
node1 := AppendNode(root, 'D');
for i := 1 to 4 do begin
GetEAttr(v8, v9, v10);
node2 := AppendNode(node1, 'E');
SetNodeAttrInt(node2, 'V8', v8);
SetNodeAttrInt(node2, 'V9', v9);
SetNodeAttrInt(node2, 'V10', v10);
end;
XMLSaveToFile(xmlDoc, 'test.xml', ofIndent);
end;