Как уже пояснялось, при создании XML-документа используется его представление в виде DOM модели. Ниже приведен пример части текста Delphi программы создания заголовка xml сообщения.
procedureTThread1.HeaderCreate(Sender: Tobject);var // объявление сокласса, необходим для создания coDoc : CoDomDocument ; // объекта XMLDomDocument Doc : DomDocument ; // объявление объектов DOMElement r : IXMLDOMElement; Node : IXMLDOMElement; // DOMText txt : IXMLDOMText; // DOMAttribute attr : IXMLDOMAttribute; begin // создание документа DOM Doc:=coDoc.Create; // установка синхронного режима обработки Doc.Set_async(false); // начальная инициация DOM документа Doc.LoadXML(''); // получение адреса корневого элемента r:=Doc.Get_documentElement; // создание DOMElement (таг <Sender>) Node := Doc.createElement ( 'Sender'); // создание текстового узла 'ООО "Тайфун"' txt := Doc.createTextNode( 'ООО "Тайфун"'); // присвоение узлу <Sender> значение // текстового узла 'ООО "Тайфун"' Node.appendChild(txt); // добавление элемента <Sender> в корень документа как дочернего r.appendChild(Node); // аналогичные операции для тага <From> Node := Doc.createElement ( 'From'); txt := Doc.createTextNode( 'http://tayfun.ru/xml/default.asp'); Node.appendChild(txt); r.appendChild(Node); // аналогичные операции для тага <To> Node := Doc.createElement ( 'To'); txt := Doc.createTextNode( 'http://irbis.ru'); Node.appendChild(txt); r.appendChild(Node); // создание DOMElement () Node := Doc.createElement ( 'TypeDocument'); // создание узла XMLDOMAttribute Att := Doc.createAttribute ( 'Id ', ' Order'); // <TypeDocument Id="Order"/> Node.appendChild(Att); r.appendChild(Node); end;
Следует отметить, что объявление переменной coDoc : CoDomDocument и Doc:DomDocument , а также ее создание методом Create ( Doc:=coDoc.Create;) осуществляется один раз. Объявление переменной находится в секции описания глобальных переменных, а не в локальной процедуре, как было продемонстрировано для наглядности в данном примере (т.е. одна глобальная переменная типа DomDocument на один программный модуль).