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 .
复制代码



本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/08/27/1809947.html,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值