zoukankan      html  css  js  c++  java
  • Delphi 中的 XMLDocument 类详解(6) 访问节点属性

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;
    
    type
      TForm1 = class(TForm)
        XMLDocument1: TXMLDocument;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //打开
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      XMLDocument1.LoadFromFile('c:\temp\test.xml');
      {必须用万一提供的 xml 测试文件, 才能有相同的返回值}
    end;
    
    
    //获取根元素属性
    procedure TForm1.Button1Click(Sender: TObject);
    var
      nodeList: IXMLNodeList;
      node: IXMLNode;
    begin
      ShowMessage(IntToStr(XMLDocument1.DocumentElement.AttributeNodes.Count)); {1}
    
      ShowMessage(XMLDocument1.DocumentElement.Attributes['备注']);             {测试}
      {通过属性名访问属性, 一般用 Attributes['属性名']}
    
      ShowMessage(XMLDocument1.DocumentElement.AttributeNodes[0].Text);         {测试}
      {通过属性位置访问属性, 必须用 AttributeNodes[位置ID]}
      {但通过 AttributeNodes['属性名'] 也可以访问属性, 譬如:}
      ShowMessage(XMLDocument1.DocumentElement.AttributeNodes['备注'].Text);    {测试}
    
      {AttributeNodes 是某个节点的属性列表, 它也是一个节点列表对象, 譬如:}
      nodeList := XMLDocument1.DocumentElement.AttributeNodes;
      node := nodeList[0];
      ShowMessage(node.Text); {测试}
      node := nodeList['备注'];
      ShowMessage(node.Text); {测试}
    end;
    
    
    //访问第二个人的属性信息
    procedure TForm1.Button2Click(Sender: TObject);
    var
      nodeList: IXMLNodeList;
      node: IXMLNode;
    begin
      nodeList := XMLDocument1.DocumentElement.ChildNodes;
      node := nodeList[1];
    
      ShowMessage(IntToStr(node.AttributeNodes.Count)); {1}
      ShowMessage(node.Attributes['职务']);             {副科长}
      ShowMessage(node.AttributeNodes[0].Text);         {副科长}
    end;
    
    
    //访问某个节点的所有属性
    procedure TForm1.Button3Click(Sender: TObject);
    var
      nodeList: IXMLNodeList;
      node: IXMLNode;
      num,i: Integer;
    begin
      nodeList := XMLDocument1.DocumentElement.ChildNodes;
      node := nodeList[0];
      num := node.AttributeNodes.Count;
    
      for i := 0 to num - 1 do
      begin
        ShowMessage(node.AttributeNodes[i].Text); {会分别显示: 科长 正局级}
      end;
    end;
    
    end.
    
  • 相关阅读:
    URAL——DFS找规律——Nudnik Photographer
    URAL1353——DP——Milliard Vasya's Function
    URAL1203——DPor贪心——Scientific Conference
    递推DP HDOJ 5389 Zero Escape
    区间DP UVA 1351 String Compression
    树形DP UVA 1292 Strategic game
    Manacher HDOJ 5371 Hotaru's problem
    同余模定理 HDOJ 5373 The shortest problem
    递推DP HDOJ 5375 Gray code
    最大子序列和 HDOJ 1003 Max Sum
  • 原文地址:https://www.cnblogs.com/del/p/1024555.html
Copyright © 2011-2022 走看看