把多层次的 XML 文档解析为 TreeView 显示

c#解析xml绑定treeview控件实现 向web端的api发送http请求,得到的结果是xml格式的节点信息,id标识节点号, 阅读详情

XML 文档是一个有多层树形节点的文档。因为节点数不确定,所以要跟踪每个节点,需要用到递归。

肉眼阅读 XML 比较累,需要去对付一堆的尖括号。用 Delphi 程序把它显示为一个 TreeView 的树结构,比较容易用眼睛去看。

以下是我的代码,基于 Delphi 10.4 没使用第三方控件。

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  FireDAC.Stan.Param, FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf,
  FireDAC.DApt.Intf, FireDAC.UI.Intf, FireDAC.VCLUI.Wait, Data.DB, Vcl.StdCtrls,
  Vcl.Grids, Vcl.DBGrids, FireDAC.Comp.UI, FireDAC.Stan.StorageXML,
  FireDAC.Comp.DataSet, FireDAC.Comp.Client, Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc,
  Vcl.ComCtrls, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    XMLDocument1: TXMLDocument;
    TreeView1: TTreeView;
    Panel1: TPanel;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

    procedure CreateTreeView(ANode: IXMLNode; TreeNode: TTreeNode);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Rootnode,node : IXMLNode;
  nodelist:IXMLNodeList;
  b,c,str, S: string;
  i, j:Integer;
  StartItemNode: IXMLNode;
  ANode: IXMLNode;

  TotalAmount, StartDate, EndDate, DepositDate: string;
  DT: Cardinal;
begin
  if OpenDialog1.Execute() then
  begin
    DT := GetTickCount;
    Screen.Cursor := crHourGlass;
    try
      XMLDocument1.LoadFromFile(OpenDialog1.FileName);
      XMLDocument1.Active := True;

      Rootnode := XMLDocument1.DocumentElement;
      TreeView1.Items.BeginUpdate;
      try
        CreateTreeView(RootNode, Treeview1.Items.GetFirstNode);
      finally
        TreeView1.Items.EndUpdate;
      end;
    finally
      Screen.Cursor := crDefault;
    end;

    DT := GetTickCount -DT;
    S := '执行时间 = ' + FloatToStr(DT/1000) + ' 秒';
    ShowMessage(S);
  end;
end;

procedure TForm1.CreateTreeView(ANode: IXMLNode; TreeNode: TTreeNode);
var
  ParentTreeNode, CurrentTreeNode: TTreeNode;
  i: Integer;
begin
  //采用递归,把一个多层次的 XML 变成 TreeView 显示。测试通过。

  if ANode.HasChildNodes then
  begin
    CurrentTreeNode := TreeView1.Items.AddChild(TreeNode, ANode.NodeName);
    ParentTreeNode := CurrentTreeNode;
    for i:=0 to ANode.ChildNodes.Count-1 do
    begin
      CreateTreeview(ANode.ChildNodes[i], ParentTreeNode);
    end;
  end
  else
  begin
    TreeView1.Items.AddChild(TreeNode, VarToStr(ANode.NodeValue));
  end;
end;


end.

使用C#将XML转换为TreeView视图 通过将XML数据加载到TreeView中,我们可以以树状结构的形式显示和操作XML数据。该方法首先加载XML文件到一个XmlDocument对象中,然后清空TreeView控件的节点,接着使用递归的方式将XML节点添加到TreeView中。方法中,我们遍历XML节点的子节点,并将它们添加到TreeView的相应节点中。对于叶子节点,我们附加了节点的文本值,以便在TreeView中显示。要使用上述代码,我们需要将XML数据保存为一个名为"data.xml"的文件,并在窗体加载时调用。事件处理程序中调用了。 阅读详情

相关推荐

实现XML文件树形结构显示与节点操作功能

XML,即可扩展标记语言(Extensible Markup Language),是一种用于存储和传输数据的标记语言。它允许用户定义自己的标签,从而能够创建各种结构化的数据文档。XML的设计目标是传输和存储数据,而不局限于数据的显示。由于其结构化和易于阅读的特点,XML在多种IT应用中被广泛应用。解析器是处理XML文档的软件组件,它的基本作用包括读取XML文件、构建文档的内部结构(通常是DOM树),并提供接口供应用程序访问和修改XML文档内容。

weixin_42524864的博客 692

关于XML 树结构浅谈

第一行是 XML 声明。它定义 XML 的版本(1.0)和所使用的编码(UTF-8 : 万国码, 可显示各种语言)。这篇文章主要介绍了XML 树结构的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下。您可以假设,从这个实例中,XML 文档包含了一张 Jani 写给 Tove 的便签。XML 文档中的元素形成了一棵文档树。XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。该元素是所有其他元素的父元素。所有的元素都可以有文本内容和属性(类似 HTML 中)。

xiaoweids的博客 174

用C#实现XML数据绑定到TreeView控件

XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它为不同平台之间的信息交换提供了灵活性。XML文档由一系列定义良好且易于理解的元素组成,这些元素以层级结构组织,便于用户按照逻辑关系处理数据。TreeView控件是一种常用的界面元素,用于以树状形式展示信息,类似于文件系统的目录结构。用户可以通过展开或折叠树节点来浏览层级化数据。在不同的平台上,TreeView控件的表现形式和功能可能会有所不同,但它通常被用来展示具有父子关系的数据结构。

weixin_42515392的博客 804

C# 读取 XML 到TreeView

 private void updateTreeView(string filename)...{try...{treeView1.Nodes.Clear();//清空treeviewXmlDocument tmpxmldoc = new XmlDocument(); //实例化XML文档tmpxmldoc.Load(filename); //加载XML文档FillTree(tmpxmld

malinglong321的专栏 2325

WinForm应用中TreeView控件与XML文件操作实践

本文还有配套的精品资源,点击获取 简介:在C# WinForm应用开发中,配置文件是存储应用程序设置的关键组件。本教程将指导如何读取TreeView控件中的节点名称,并将其信息保存至自定义XML文件。涉及的要点包括TreeView控件的使用、节点遍历、XML文件的创建和编辑、异常处理以及文件I/O操作。此外,还会讨论如何处理实际开发中的潜在问题,并确保代码的健壮性和可靠性。...

weixin_36019375的博客 1634

解析XML:使用LINQ to XML导航与显示

本文深入探讨了如何使用LINQ to XML技术来加载、解析和显示XML文件的内容。通过XDocument类的Root属性,可以获取XML文件的根元素,并通过递归方法PrintElement以不同的缩进级别显示所有元素。此外,还介绍了如何在TreeView控件中导航XML文档结构,并使用LINQ方法执行类似XPath的查询。

weixin_42613017的博客 360

C#中用Treeview空间显示XML文件

private void Treeview_Load(object sender, EventArgs e)        {            string root = System.IO.Directory.GetCurrentDirectory();            root = root + "//abc.xml";            //MessageBox.Show(r

libby的专栏 1230

XMLParseToTree:带有 GUI 的 XML 解析器,然后将其转换为树

This is a Java Project used to parse XML files ( and probably DTD files , which is optional ) to visual graphics . The graphics should be a tree , but as you know ,there are two kinds of tree ,one is Directory Tree amd the other is Multiway Tree . I can't make sure which one is wanted by teacher ,so I made both of them . 一个用来将xml文件(和DTD文件,可选)可视化的工具,也就是将提供的XML文件转化为树的形式,同时提供XML校验机制(也就是当XML出现错误时,告知错误

使用TreeView加载XML文件

1.需要读取的xml文档内容 2. 最终实现效果 3 貌似看起实现起来很复杂 但是想想还是挺简单 思路: 读取XML文档→获取XML根元素→ 递归添加根元素的子元素(因为树形的结构和XML很像) 具体看代码 首先给加载button注册方法 1 private void btn_LoadXml_Click(object sender, EventArgs e) 2 { 3 //读取Xml文件 this.txt...

xlg1128的专栏 1104

将xml解析成树状结构显示

NULL 博文链接:https://zhangqkunkun.iteye.com/blog/788828

OK3588-C开发板Forlinx Desktop系统烧录与多媒体功能实战

本文详细介绍了OK3588-C开发板Forlinx Desktop系统的烧录步骤与多媒体功能实战。从硬件准备到软件工具配置,逐步解析RKDevTool烧录技巧,并深入测试摄像头、视频编解码及音频功能,帮助开发者快速掌握RK3588芯片的强大性能与Ubuntu系统的优化应用。

weixin_29190169的博客 417

C#把xml文件加载到TreeView控件上

C#把xml文件加载到TreeView控件上 读取xml文件可以用XDocument和XMLDocument这两种技术,我在本博客上用的是XDoc技术,下一篇再介绍使用XMLDocument读取XML的代码 下面是原始XML文件 <?xml version="1.0" encoding="utf-8" ?> <!--学生成绩信息--> <!--这里是约束部分,即内部D...

yasenRK的博客 1642

comsol 多物理场仿真流程-以开关柜为例

1、主要方法 在SolidWorks中对于开关柜的内部与外部结构进行建模,生成能够导入软件计算的3D模型。将SolidWorks中的模型导入comsol软件中,设置参数进行多物理场耦合仿真。 1、具体步骤 删除高压开关柜中对其内部电磁环境无较大影响的结构,如低压测量柜、断路器内部结构等。 导入模型:将厂家提供的3D模型转化为solidworks结构模型。 修复模型:修复已转化模型中转化错误的部分、修复已转化模型中非实体部分、修复已转化模型中重叠实体部分 化简模型:去除过于...

健忘16的博客 7020

Xml和TreeView

1.TreeView的遍历,应该比较简单的吧?我看见不少人写得多长,比较复杂的。现在,举例一个TreeView遍历后勾选: private void tv1_AfterCheck(object sender, TreeViewEventArgs e) { TreeNode curNode = tv1.SelectedNode = e.Node; ...

rell336的专栏 609

ACM论文LaTeX模板解析(三)| 文章顶部信息(Top matter))Part 1

文章顶部信息(Top matter))Part 1,文章类型、作者信息等

FreshManInC的博客 4853

【课程设计】TCP/IP 应用环境中服务器的部署与实现

本项目旨在通过搭建一个虚拟网络环境,实现软路由系统的配置和服务器的搭建与测试。具体包括安装虚拟机 VMWare Workstation,安装 Windows Server 2003 操作系统,配置软路由系统(包括双网卡安装、协议配置和测试),以及搭建并测试 DHCP 服务、DNS 服务、WWW 服务、FTP 服务和 SMTP/POP3 服务。

weixin_74907236的博客 1524

使用C#实现将XML数据填充到TreeView中

 文档及代码下载:http://www.dingos.cn/index.php?topic=1899.0介绍当菜单项是经常改变时,从XML文档中创建TreeView才当是非常有用的。例如,使用XML作为数据库存储记录。这里有个简单示例。以防混淆这个例子比较简单。背景对XML、TreeView控件的应用,在Visual Studio中有助于理解这些步骤。使用代码注意:

夜晚回家 1143

9.27华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

9.26华为OD机试真题 新系统 - 均衡调度 (Java/Py/C/C++/Js/Go)

算法大师! 491

C#编程学习44:根据xml文件生成TreeView及控件内容导出到xml文件

从xml中读取节点内容,添加到树控件当中;在界面上通过右键菜单,进行树控件节点编辑,将编辑之后的树控件再重新导出为xml文件

m1m2m3mmm的博客 2522

OBYC自动科目确定整理

WGI是用来重估发货的,通过比较发货时的价格和最新计算的价格,以此将所有差异过账到分配给此事务码的总账科目。是工厂还是公司,一般项目中都是使用工厂,使用工厂的意思就是物料在每个工厂下有一个价格,如果使用公司,则一个公司下的所有工厂都使用一个价格。如果该物料用的是移动平均价,那么该库存依然还存在的情况下,这个价格差异会过账到存货科目上而不会过账到存货的价格差异科目上。用于确定存货评估过账的存货冲抵科目。事务码WGR是用来重估工厂收货的,根据 计算出来的价格差异,把库存的调整过账分配给这个事务码中的总账科目。

nopicture的博客 348

USB_TYPE-C 母座电路设计

本文详细介绍了USB Type-C接口(C2765186)的电路设计要点,重点解析了电源、识别和数据三部分的关键连接方案。电源部分需并联VBUS和GND引脚并加宽走线以承载3A电流;识别部分必须为CC1/CC2引脚配置5.1kΩ±1%精度的下拉电阻,这是触发PD充电的核心条件;数据部分通过短接正反插引脚实现盲插功能。文档还提供了完整的引脚对照表,并强调PCB布局需注意ESD防护、差分走线阻抗控制等要点,为Type-C接口设计提供了实用指导。

在读研究生,FPGA电路设计与功能开发。 584

将XML文档用treeview显示

比较简单,用到三个控件button treeviewopenFileDialog 上代码,关键技术:递归 form 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using ...

weixin_34130389的博客 171

使用ArcGIS Pro进行土地利用分类的机器学习与深度学习

传统的土地利用分类方法通常依赖于手动解译和规则定义,但随着机器学习和深度学习的发展,我们现在可以利用这些技术来自动化和提高分类的精度。ArcGIS Pro是一种功能强大的GIS软件,它提供了丰富的工具和功能,可以支持土地利用分类的机器学习和深度学习。我们将首先讨论数据准备和预处理的步骤,然后介绍常用的机器学习和深度学习方法,并提供相应的源代码示例。这可以通过人工标注或半自动的方式完成。数据裁剪:根据研究区域的范围,裁剪遥感影像数据,以减少计算和存储的负担,并确保只包含感兴趣的土地利用区域。

code_program481的博客 2039

VB6将XML数据传入TreeView控件Java教程

VB6将XML数据传入TreeView控件Java教程 由于XML文档是以树形结构为格式,所以通常采用TreeView控件显示它们。以下码段说明了如何在Visual Basic 6将XML文档传入一个TreeView控件。 首先,建立一个新的带有窗体的Visual Basic 6工程,然后在窗体中添加一个TreeView控件,并添加一个引用到微软XML解析器。 接着,在Form_Load事件中添加如下的代码: Private Sub Form_Load() Dim objDOM As DOMDocument

ccc369639963的博客 483

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C# asp.net 将xml 导入到treeview 中显示出来

XmlDocument xmldoc = new XmlDocument(); xmldoc.Load("G:\\Test.xml");//装载XML文档 TreeNode rootnode = new TreeNode("cross工程"); Model.TreeTableNodeClass temp = new Mode

天逸南爵的专栏 1019

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

将XML数据填充到TreeView中

文档及代码下载:http://www.dingos.cn/index.php?topic=1899.0 介绍 当菜单项是经常改变时,从XML文档中创建TreeView才当是非常有用的。例如,使用XML作为数据库存储记录。这里有个简单示例。以防混淆这个例子比较简单。 背景 对XML、TreeView控件的应用,在Visual Studio中有助于理解这些步骤。 使用

Dingos专栏 694

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 基于 Delphi 的前后端分离:之二
下一篇: Delphi FastReport 的一点小功能总结
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值