uses NativeXml;

const
  xmlFile = 'C:\Temp\xml_test_files\basic.xml'; //测试文件

var
  xml: TNativeXml;

procedure TForm1.FormCreate(Sender: TObject);
begin
  xml := TNativeXml.Create(nil);
  xml.LoadFromFile(xmlFile);
end;

{获取根节点的类名及类的继承关系}
procedure TForm1.Button1Click(Sender: TObject);
var
  str: string;
  myClass: TClass;
begin
  ShowMessage(xml.Root.ClassName); //TsdElement

  str := '';
  myClass := xml.Root.ClassType;
  while myClass <> nil do
  begin
    if str <> '' then str := ' > ' + str;
    str := myClass.ClassName + str;
    myClass := myClass.ClassParent;
  end;
  ShowMessage(str); //TObject > TPersistent > TDebugPersistent > TXmlNode > TsdContainerNode > TsdElement
end;

{根节点的名称与内容}
procedure TForm1.Button2Click(Sender: TObject);
var
  root: TsdElement;
begin
  root := xml.Root;
  ShowMessage(root.Name);            //名称
  ShowMessage(root.ElementTypeName); //类型名称
  ShowMessage(root.WriteToString);   //内容
end;

{其子成员}
procedure TForm1.Button3Click(Sender: TObject);
var
  root: TsdElement;
  i: Integer;
begin
  root := xml.Root;
  ShowMessage(IntToStr(root.AttributeCount)); //属性总数
  ShowMessage(IntToStr(root.NodeCount));      //子节点数目

  Memo1.Clear;
  for i := 0 to root.NodeCount - 1 do //遍历子节点
  begin
    Memo1.Lines.Add(root[i].Name + #9 + root[i].Value); // root[i] = root.Nodes[i]
  end;
end;

posted on 2011-03-24 16:01  万一  阅读(7597)  评论(14编辑  收藏  举报