1
0
mirror of https://github.com/Kirill/simplexml.git synced 2026-04-26 23:56:13 +02:00
Files
simplexml/Sample/TestForms.pas
T
Kirill Krasnov bef25364bc Version 1.0.1
2010-11-06 22:16:58 +02:00

82 lines
1.9 KiB
ObjectPascal

unit TestForms;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SimpleXML, StdCtrls;
type
TTestForm = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
TestForm: TTestForm;
implementation
{$R *.dfm}
procedure TTestForm.Button1Click(Sender: TObject);
var
aDoc: IXmlDocument;
anElem2: IXmlNode;
begin
// Ñîçäàåì ïóñòîé äîêóìåíò XML
aDoc := CreateXmlDocument;
// Ñ÷èòûâàåì èç ôàéëà
aDoc.Load(ExtractFilePath(ParamStr(0)) + '\Test.xml');
// Âûâîäèì â Memo1 ïîëíûé òåêñò ñ÷èòàíîãî XML
Memo1.Lines.Text := aDoc.Xml;
Memo1.Lines.Add('------------------------');
// Èùåì ïåðâûé ýëåìåíò ñ òýãîì 'elem2'
anElem2 := aDoc.DocumentElement.SelectSingleNode('elem2');
// Âûâîäèì â Memo1 XML-òåêñò ýëåìåíòà anElem2
Memo1.Lines.Add(anElem2.Xml);
Memo1.Lines.Add('------------------------');
// Âûâîäèì â Memo1 çíà÷åíèå àòðèáóòà 'a2' ýëåìåíòà anElem2
Memo1.Lines.Add(anElem2.GetAttr('a2'));
end;
procedure TTestForm.Button2Click(Sender: TObject);
var
aDoc: IXmlDocument;
anElem: IXmlElement;
begin
// Ñîçäàåì ïóñòîé äîêóìåíò XML ñ êîðíåâûì ýëåìåíòîì "root-element"
aDoc := CreateXmlDocument('xml');
// Ñîçäàåì ýëåìåíò 'elem' è äîáàâëÿåì åãî â êà÷åñòâå äî÷åðíåãî ýëåìåíòà äëÿ êîðíåâîãî
anElem := aDoc.DocumentElement.AppendElement('elem');
// Äîáàâëÿåì àòðèáóòû 'a1' è 'a2' ê íîâîìó ýëåìåíòó
anElem.SetAttr('a1', 'elem1 a1');
anElem.SetAttr('a2', 'elem1 a2');
// Äîáàâëÿåì åùå îäèí ýëåìåíò 'elem'
anElem := aDoc.DocumentElement.AppendElement('elem');
anElem.SetAttr('a1', 'elem2 a1');
anElem.SetAttr('a2', 'elem2 a2');
// Ñîõðàíÿåì äîêóìåíò â ôàéë
aDoc.Save(ExtractFilePath(ParamStr(0)) + '\Test2.xml');
end;
end.