RAD Studio 10.2.3 测试√
【新增】读取节点中的属性内容
示例:
<?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