SuperObject 文件包中还有一个 SuperXmlParser 单元, 可以从 XML 中解析出 ISuperObject.
SuperXmlParser 只有三个函数: XMLParseString、XMLParseStream、XMLParseFile, 分别从字符串、流、文件中解析.
遗憾的是对中文不够友好.
--------------------------------------------------------------------------------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses SuperObject, SuperXmlParser;
procedure TForm1.Button1Click(Sender: TObject);
var
jo: ISuperObject;
begin
jo := XMLParseString('<Person><Name sex="男">张三</Name><Age>123</Age></Person>');
ShowMessage(jo.AsString);
ShowMessage(jo['#children'].AsArray[0].AsString);
ShowMessage(jo['#children'].AsArray[1].AsString);
ShowMessage(jo['#children'].AsArray[0]['#children'].AsArray[0].AsString); {张三}
ShowMessage(jo['#children'].AsArray[0]['#attributes.sex'].AsString); {男}
ShowMessage(jo['#children'].AsArray[1]['#children'].AsArray[0].AsString); {123}
end;
//使用压缩
procedure TForm1.Button2Click(Sender: TObject);
var
jo: ISuperObject;
begin
jo := XMLParseString('<Person><Name sex="男">张三</Name><Age>123</Age></Person>', True);
ShowMessage(jo.AsString);
ShowMessage(jo['Name.Name'].AsString); {张三}
ShowMessage(jo['Name.sex'].AsString); {男}
ShowMessage(jo['Age'].AsString); {123}
end;
end.