Delphi之通过代码示例学习XML解析  
官方Delphi 学习QQ群: 682628230(三千人)
频道

Delphi之通过代码示例学习XML解析


这个程序可以用于解析任何合法的XML字符串。


以解析这样一个XML的字符串为例:



071606440801100.png

  如上图所示,可以 “XML中的字段标签:XML中对应标签的值” 的格式显示解析的效果。


  因为进行了异常处理(使用try..except..end,并且在异常处理中使用ShowMessage弹出异常信息),所以如果输入的字符串不是合法的XML格式的话,程序会正常报错,而不会异常终止。


  比如没有输入直接点击解析按钮,效果如下:


  有比如输入一个非法的字符串,效果如下



然后看一下代码                   


unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, XMLIntf, XMLDoc;

 

type

  TForm1 = class(TForm)

    edt1: TEdit;

    btn1: TButton;

    procedure btn1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure ReadXml(Node: IXMLNode; var showmess: string);

var

  NodeList: IXMLNodeList;

  strName: string;

  i: Integer;

begin

  if not Node.HasChildNodes then Exit;

  nodeList := node.ChildNodes;

  for i := 0 to nodeList.Count - 1 do

  begin

    strName := nodeList[i].NodeName;

    if nodeList[i].IsTextElement then //如果是元素

    begin

      showmess:= showmess + strName + ':' + NodeList[i].NodeValue + #13#10;

    end

    else if nodeList[i].HasChildNodes then //如果有子节点

    begin

      ReadXml(NodeList[i], showmess);

    end;

  end;

end;

 

procedure TForm1.btn1Click(Sender: TObject);

var

  sXML, showmess: string;

  ComInstrXML: IXMLDocument;

  mainNode: IXMLNode;

begin

   showmess:= '';

   sXML:= edt1.Text;

   sXML:= StringReplace(sXML, 'UTF-8', 'gbk', []);   //只替换

   try  //一定不要忘记异常处理,保证程序的稳定性,能够正常处理异常而不至于在发生异常的时候导致程序崩溃

     ComInstrXML:= LoadXMLData(sXML);

     mainNode:= ComInstrXML.DocumentElement;

     readXML(mainNode, showmess);

 

     ShowMessage(showmess);

   except

     on E: Exception do

     begin

       ShowMessage(E.Message);

     end;

   end;

end;

 

end.


来源:https://www.cnblogs.com/xumenger/p/4711223.html


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.17823195457458 seconds