相關方法與屬性:
TNativeXML.Create(...);
TNativeXML.CreateEx(...);
TNativeXML.CreateName(...);
Obj.New;
Obj.ReadFromString(...);
Obj.VersionString;
Obj.EncodingString;
測試代碼:
uses NativeXML; //!
const xmlFile = 'C:\Temp\xml_test_files\basic.XML'; //測試文件
{使用 Create 建立時可指定屬主並隨屬主一同釋放}
procedure TForm1.Button1Click(Sender: TObject);
var
xml: TNativeXML;
begin
xml := TNativeXML.Create(Self);
// xml := TNativeXML.Create(nil);
// System.ReportMemoryLeaksOnShutdown := True;
// XML.Free;
end;
{CreateEx}
procedure TForm1.Button2Click(Sender: TObject);
var
xml: TNativeXML;
begin
xml := TNativeXML.CreateEx(False, //是否建立 Declaration 對象, 如:
True, //是否建立跟節點
nil //指定屬主
);
ShowMessageFmt('version: %s', [xml.VersionString]); //顯示 XML 版本
ShowMessageFmt('encoding: %s', [xml.EncodingString]); //顯示 XML 編碼
XML.Free;
xml := TNativeXML.CreateEx(True, true, nil);
ShowMessageFmt('version: %s', [XML.VersionString]); //1.0
ShowMessageFmt('encoding: %s', [XML.EncodingString]); //UTF-8
XML.Free;
end;
{使用 CreateName 建立可直接指定根節點的名稱}
procedure TForm1.Button3Click(Sender: TObject);
var
xml: TNativeXML;
begin
xml := TNativeXML.CreateName('MyRoot');
ShowMessage(XML.Root.Name); //MyRoot
XML.Free;
end;
{使用 New 方法清空並重新構建}
procedure TForm1.Button4Click(Sender: TObject);
var
xml: TNativeXML;
begin
xml := TNativeXML.Create(nil);
xml.LoadFromFile(XMLFile);
ShowMessage(XML.WriteToString);
XML.New;
// XML.Clear;
ShowMessage(XML.WriteToString);
XML.Free;
end;
{使用 ReadFromString 從文本讀入}
procedure TForm1.Button5Click(Sender: TObject);
const
str = '<?XML version="1.0"?><Root><Items><item>1</item><item>2</item></Items></Root>';
var
xml: TNativeXML;
begin
xml := TNativeXML.Create(nil);
XML.ReadFromString(str);
xml.XMLFormat := xfReadable;
Memo1.Text := XML.WriteToString;
end;