Delphi 读取、写入XML文件  
官方Delphi 学习QQ群: 682628230(三千人)
频道

Delphi 读取、写入XML文件


RAD Studio 10.2.3 测试√

4142067b700144318b105bf36319885f.png

【新增】读取节点中的属性内容


示例:

<?xml version="1.0" encoding="UTF-8"?>

<Persons>

  <test>测试内容</test>

  <!-- test2  是新增内容 时间:2021年9月9日 -->

  <test2 Content="测试内容2"></test2>


  <Person>

    <Name>小印01</Name>

    <Age>22</Age>

    <Sex>男</Sex>

  </Person>


  <Person>

    <Name>小印02</Name>

    <Age>23</Age>

    <Sex>男</Sex>

  </Person>

</Persons>


结果:修改时间 2021年9月9日



代码:

// uses Xml.XMLDoc, Xml.XMLIntf


procedure ReadXMlNode(AStrList: TStringList; ANode: IXMLNode);

var

  i: Integer;

  mNodeList: IXMLNodeList;

  mNodeName: string;

  mTmpStr: string;

begin

  mTmpStr := '';

  if not ANode.HasChildNodes then         // 如果 mNode 没有子节点

    Exit;

  mNodeList := ANode.ChildNodes;

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

  begin

    mNodeName := mNodeList[i].NodeName;


    // begin ******* 新增内容 2021年9月9日 ******************************

    if mNodeName = 'test2' then

    begin

      // 获取节点中的属性内容

      mTmpStr := mNodeName + ': ' + mNodeList[i].Attributes['Content'];

      AStrList.Add(mTmpStr);

    end;

    // end ******* 新增内容 2021年9月9日 ********************************


    if mNodeList[i].IsTextElement then    // 如果是文本元素

    begin

      mTmpStr := mNodeName + ': ' + mNodeList[i].NodeValue;

      AStrList.Add(mTmpStr);

    end

    else

    if mNodeList[i].HasChildNodes then    // 如果还有子节点

    begin

      ReadXMlNode(AStrList, mNodeList[i]);

    end;

  end;

end;


procedure TForm_Tips.Button_ReadXMLFileClick(Sender: TObject);

var

  mFileName: string;

  mDocument: IXMLDocument;

  mMainNode: IXMLNode;

  mStrList: TStringList;

begin

  mFileName := ExtractFileDir(ParamStr(0)) + '\test.xml';

  if not FileExists(mFileName) then

    Exit;


  mDocument := TXMLDocument.Create(nil);

  mDocument.LoadFromFile(mFileName);

  mMainNode := mDocument.DocumentElement;

  mStrList := TStringList.Create;

  ReadXMlNode(mStrList, mMainNode);

  Memo_Log.Lines.Text := mStrList.Text;

  mStrList.Free;

end;






//写入

// uses Xml.XMLDoc, Xml.XMLIntf


procedure TForm_Tips.Button_WriteXMLFileClick(Sender: TObject);

var

  mFileName: string;

  mDocument: IXMLDocument;

  mMainNode: IXMLNode;

  mNode, mTmpNode: IXMLNode;

begin

  mFileName := ExtractFileDir(ParamStr(0)) + '\test2.xml';


  mDocument := TXMLDocument.Create(nil);

  mDocument.Active := True;

  mDocument.Version := '1.0';        // 定义 XML 的版本

  mDocument.Encoding := 'UTF-8';     // 所使用的编码


  // 根节点

  mMainNode := mDocument.AddChild('test', 'xiaoyin');


  mNode := mMainNode.AddChild('test02');

  mNode.Attributes['attribute01'] := 'xiaoyin01';

  mNode.Attributes['attribute02'] := 'xiaoyin02';


  mTmpNode := mNode.AddChild('test03');

  mTmpNode.Text := '测试内容03';

  mTmpNode := mNode.AddChild('test04');

  mTmpNode.Text := '测试内容04';

  mTmpNode := mNode.AddChild('test05');

  mTmpNode.Text := '测试内容05';


  mDocument.SaveToFile(mFileName);

  mDocument.Active := False;

  ShowMessage('写入成功');

end;

————————————————


原文链接:https://blog.csdn.net/qq_44111597/article/details/120197833



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

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

执行时间: 0.036185026168823 seconds