• Delphi 中的 XMLDocument 类详解(13) 关于 XML 属性


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;
    
    type
      TForm1 = class(TForm)
        XMLDocument1: TXMLDocument;
        Memo1: TMemo;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //打开
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      XMLDocument1.LoadFromFile('c:\temp\test.xml');
      {必须用万一提供的 xml 测试文件, 才能有相同的返回值}
    end;
    
    
    //XMLDocument1 对象的 XML 属性
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      {前面我们经常用这句话, 因为这里的 Lines 与 XML 同属于 TStrings}
      Memo1.Lines := XMLDocument1.XML;
    
      {如果不怕麻烦, 这样写也可以:}
      Memo1.Lines.Text := XMLDocument1.XML.Text;
    
      {如果知道了这一点, 那 XML 属性的功能可就多了, 并且这里的 XML 属性是可写的}
      {不过这里要谈的是节点的 XML 属性}
    end;
    
    
    //根节点的 XML 属性
    procedure TForm1.Button2Click(Sender: TObject);
    var
      node: IXMLNode;
    begin
      {先看根节点: XMLDocument1.DocumentElement}
      node := XMLDocument1.DocumentElement;
    
      //Memo1.Lines := node.XML; {这一句会出错}
      {因为节点的 XML 属性是 WideString 类型的, 应该这样:}
      Memo1.Lines.Text := node.XML; {将会读出根节点与根节点包含的所有内容}
    
      {还有一个更大的区别: 节点的 XML 是只读的!}
    end;
    
    
    //子节点的 XML 属性
    procedure TForm1.Button3Click(Sender: TObject);
    var
      node: IXMLNode;
    begin
      node := XMLDocument1.DocumentElement;
      node := node.ChildNodes[0];
    
      Memo1.Lines.Text := node.XML; {会显示一个子节点的全部}
    end;
    
    
    //属性的 XML 属性
    procedure TForm1.Button4Click(Sender: TObject);
    var
      node: IXMLNode;
    begin
      node := XMLDocument1.DocumentElement;
      node := node.AttributeNodes[0]; {属性也是 IXMLNode 类型的}
    
      ShowMessage(node.NodeName);  {备注}
      ShowMessage(node.NodeValue); {测试}
    
      {用 XML 属性一次把他们都读出来:}
      ShowMessage(node.XML);       {备注="测试"}
    end;
    
    
    //叶节点的 XML 属性
    procedure TForm1.Button5Click(Sender: TObject);
    var
      node: IXMLNode;
    begin
      node := XMLDocument1.DocumentElement;
      node := node.ChildNodes[0];
      node := node.ChildNodes[0];
      node := node.ChildNodes[0]; {这就是叶节点了}
    
      ShowMessage(node.XML);  {张三}
    
      {这时的 XML 属性和 Text 属性一样了}
      ShowMessage(node.Text); {张三}
    end;
    
    end.
    
  • 相关阅读:
    jQuery中$(function(){})与(function($){})(jQuery)、$(document).ready(function(){})等的区别详细讲解
    jQuery的三种$()方式
    基于DDD的.NET开发框架
    你得学会并且学得会的Socket编程基础知识
    C#委托及事件
    C#学习笔记:泛型委托Action<T>和Fun<TResult>
    JS 变量或参数是否有值的判断
    [转]剖析ASP.Net MVC Application
    python爬虫beautifulsoup4系列2【转载】
    python爬虫beautifulsoup4系列1【转载】
  • 原文地址:https://www.cnblogs.com/del/p/1025080.html
Copyright © 2020-2023  润新知