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

Смежные вопросы