2011-11-09 8 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> 

私は反復で生成できる電子の多くは、あります。

しかし、私は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