网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi中用XMLDocument遍历XML文件
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
 
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;type  TForm1 = class(TForm)    XMLDocument1: TXMLDocument;    Button1: TButton;    Button2: TButton;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);  end;var  Form1: TForm1;implementation{$R *.dfm}//读取 xml 的函数{  功能1: 传入一个节点参数, 返回节点及其包含的所有内容;  功能2: 排除了空节点.}function ReadXml(node: IXMLNode): string;var  nodeList,attrList: IXMLNodeList;  str,strName,strValue: string;  i: Integer;begin  Result := '''';  if not node.HasChildNodes then Exit;  attrList := node.AttributeNodes;      {根节点的属性列表}  nodeList := node.ChildNodes;          {根节点下的子节点列表}  str := ''<'' + node.NodeName;  {先读取属性}  for i := 0 to attrList.Count - 1 do  begin    strName := attrList[i].NodeName;    strValue := attrList[i].NodeValue;    str := str + '' '' + strName + ''='' + AnsiQuotedStr(strValue, ''"'');  end;  str := str + ''>'' + sLineBreak; {sLineBreak 是常量, 相当于 #13#10}  {读取子节点}  for i := 0 to nodeList.Count - 1 do  begin    strName := nodeList[i].NodeName;    if nodeList[i].IsTextElement then    begin      strValue := nodeList[i].NodeValue;      str := str + ''<'' + strName + ''>'' + strValue + ''</'' + strName + ''>'' + sLineBreak;    end else if nodeList[i].HasChildNodes then    begin      str := str + ReadXml(nodeList[i]);               {这是最关键的递归调用}      str := str + ''</'' + strName + ''>'' + sLineBreak;  {封口}    end;  end;  str := str + ''</'' + node.NodeName + ''>''; {封口}  Result := str;end;//调用测试(1):procedure TForm1.Button1Click(Sender: TObject);var  str,s1,s2: string;begin  XMLDocument1.LoadFromFile(''c:\temp\test.xml'');  {必须用万一提供的 xml 测试文件, 才能有相同的返回值}  {读取文件头}  s1 := AnsiQuotedStr(XMLDocument1.Version, ''"'');  {读出版本, 并添加双引号}  s2 := AnsiQuotedStr(XMLDocument1.Encoding, ''"''); {读出字符集, 并添加双引号}  str := Format(''<?xml version=%s encoding=%s?>'',[s1,s2]); {这就是文件头了}  str := str + sLineBreak + ReadXml(XMLDocument1.DocumentElement);  ShowMessage(str); {返回 xml 包含问头在内的所有内容}end;//调用测试(2)procedure TForm1.Button2Click(Sender: TObject);var  str: string;  node: IXMLNode;begin  XMLDocument1.LoadFromFile(''c:\temp\test.xml'');  node := XMLDocument1.DocumentElement.ChildNodes[0];  str := ReadXml(node);  ShowMessage(str); {返回返回根节点下第一个子节点的所有内容}end;end.
  • 上一篇资讯: TChart使用经验小结
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号