2011-11-09 28 views
1

什麼是實現這一格式的創建XML文件的最快方法:全方位XML創建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個對象似乎是一團糟和太多。

你還可以提及如何設置編碼生成文件?

+1

你真的勢必OmniXML或者你只需​​要一個快速的方法來生成一些XML(不一定與OmniXML)? –

+1

因爲如果沒有,你可以在這裏得到一些想法:http://stackoverflow.com/questions/263419/getting-started-with-xml-and-delphi –

+2

對於初學者來說,這不是一個有效的XML。 節點沒有終止,有沒有。 – gabr

回答

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; 
+1

SetTextChild (node_g,'0');或SetNodeText(parent_of_g,'g','0'); – gabr

+0

這是真正有用和有用的。 – none