Delphi中的XMLDocument类详解(14)-遍历XML文件

Delphi中的XMLDocument类详解(14)-遍历XML文件

2023年6月29日发(作者:)

Delphi中的XMLDocument类详解(14)-遍历XML⽂件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 ldNodes then Exit; attrList := uteNodes; {根节点的属性列表} nodeList := odes; {根节点下的⼦节点列表} str := '<' + me; {先读取属性} for i := 0 to - 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 - 1 do begin strName := nodeList[i].NodeName; if nodeList[i].IsTextElement then begin strValue := nodeList[i].NodeValue; str := str + '<' + strName + '>' + strValue + '' + sLineBreak; end else if nodeList[i].HasChildNodes then begin str := str + ReadXml(nodeList[i]); {这是最关键的递归调⽤} str := str + '' + sLineBreak; {封⼝} end; end; str := str + ''; {封⼝} Result := str;end;//调⽤测试(1):procedure 1Click(Sender: TObject);var str,s1,s2: string;begin omFile('c:'); {必须⽤万⼀提供的 xml 测试⽂件, 才能有相同的返回值} {读取⽂件头} s1 := AnsiQuotedStr(n, '"'); {读出版本, 并添加双引号} s2 := AnsiQuotedStr(ng, '"'); {读出字符集, 并添加双引号} str := Format('',[s1,s2]); {这就是⽂件头了} str := str + sLineBreak + ReadXml(ntElement); ShowMessage(str); {返回 xml 包含问头在内的所有内容}end;//调⽤测试(2)procedure 2Click(Sender: TObject);var str: string; node: IXMLNode;begin omFile('c:'); node := odes[0]; str := ReadXml(node); ShowMessage(str); {返回返回根节点下第⼀个⼦节点的所有内容}end;end.

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687983279a63614.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信