var xml: TNativeXml; const xmlStr = '<?xml version="1.0" encoding="UTF-8"?>' + '<List>' + '<item ID="No.1" age="11">张三</item>' + '<item ID="No.2" age="22">李四</item>' + '<item ID="No.3" age="33">王五</item>' + '</List>'; procedure TForm1.FormCreate(Sender: TObject); begin xml := TNativeXml.Create(Self); xml.XmlFormat := xfReadable; xml.ReadFromString(xmlStr); {!} Memo1.Text := xml.WriteToString; end; {RootNodes} procedure TForm1.Button1Click(Sender: TObject); var declaration: TsdDeclaration; root: TXmlNode; begin ShowMessageFmt('%s, %s', [xml.VersionString, xml.EncodingString]); //1.0, UTF-8 declaration := xml.RootNodes[0] as TsdDeclaration; ShowMessageFmt('%s, %s', [declaration.Version, declaration.Encoding]); //1.0, UTF-8 ShowMessageFmt('%s, %d', [xml.Root.Name, xml.Root.NodeCount]); //List, 3 root := xml.RootNodes[1]; ShowMessageFmt('%s, %d', [root.Name, root.NodeCount]); //List, 3 end; procedure TForm1.Button2Click(Sender: TObject); var node: TXmlNode; begin node := xml.Root; ShowMessage(node.WriteToString); end; {*************************************** <List> <item ID="No.1" age="11">张三</item> <item ID="No.2" age="22">李四</item> <item ID="No.3" age="33">王五</item> </List> *****************************************} procedure TForm1.Button3Click(Sender: TObject); var node: TXmlNode; begin node := xml.Root[0]; ShowMessage(node.WriteToString); end; {*************************************** <item ID="No.1" age="11">张三</item> *****************************************} procedure TForm1.Button4Click(Sender: TObject); var node: TXmlNode; begin node := xml.Root[0]; ShowMessage(node.Name); //Item ShowMessage(node.Value); //张三 ShowMessage(node.Attributes[0].Name); //ID ShowMessage(node.Attributes[0].Value); //No.1 ShowMessage(node.Attributes[0].WriteToString); //ID="No.1" end; procedure TForm1.Button5Click(Sender: TObject); var node: TXmlNode; begin node := xml.Root[0]; ShowMessage(node.AttributeByName['ID'].Value); //No.1 ShowMessage(node.AttributeValueByName['ID']); //No.1 end; procedure TForm1.Button6Click(Sender: TObject); var nodeList: TsdNodeList; node: TXmlNode; i: Integer; begin node := xml.Root; ShowMessage(node.ReadString('item')); //张三 ShowMessage(node.FindNode('item').Value); //张三 ShowMessage(node.NodeByName('item').Value); //张三 //node.NodesByName(); 用法同 FindNodes nodeList := TsdNodeList.Create(False); node.FindNodes('item', nodeList); for i := 0 to nodeList.Count - 1 do begin ShowMessage(nodeList[i].Value); //张三/李四/王五 end; nodeList.Free; // for i := 0 to node.NodeCount - 1 do begin ShowMessage(node[i].Value); //张三/李四/王五 end; end; procedure TForm1.Button7Click(Sender: TObject); var node: TXmlNode; begin node := xml.Root[0]; ShowMessage(node.Parent.Name); //List ShowMessage(node.Document.EncodingString); //UTF-8 end; {StringTable} procedure TForm1.Button8Click(Sender: TObject); const path = 'c:\temp\test.txt'; begin xml.StringTable.SaveToFile(path); Memo1.Lines.LoadFromFile(path, TEncoding.UTF8); end; {*************************************** 22 1 33 1 11 1 age 3 ID 3 UTF-8 1 List 1 1.0 1 No.2 1 item 1 No.1 1 No.3 1 张三 1 item 2 王五 1 李四 1 encoding 1 version 1 *****************************************}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2008-03-25 System.Insert - 插入字符串
2008-03-25 System.Delete - 从字符串中删除
2008-03-25 System.Copy - 从字符串或数组中复制