Delphi 中的 XMLDocument 类详解(9) - 关于 HasChildNodes 与 IsTextElement
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls; type
TForm1 = class(TForm)
XMLDocument1: TXMLDocument;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} //打开
procedure TForm1.FormCreate(Sender: TObject);
begin
XMLDocument1.LoadFromFile('c:\temp\test.xml');
{必须用万一提供的 xml 测试文件, 才能有相同的返回值}
end; //HasChildNodes: 判断是否包含子节点
procedure TForm1.Button1Click(Sender: TObject);
var
node: IXMLNode;
b: Boolean;
begin
{我们从例子中拿出一个节点, 譬如根节点下的第一个节点:
<人员 职务="科长" 备注="正局级">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>34</年龄>
</人员>
}
{先用节点对象获取这个节点}
node := XMLDocument1.DocumentElement.ChildNodes[]; {这个节点当然包含子节点, 并且是包含 3 个子节点}
b := node.HasChildNodes;
ShowMessage(BoolToStr(b)); {-1; 也就是 True}
ShowMessage(IntToStr(node.ChildNodes.Count)); {3}
ShowMessage(node.NodeName); {人员} {再看其中的"姓名"节点:
<姓名>张三</姓名>
}
{先用节点对象获取这个节点}
node := XMLDocument1.DocumentElement.ChildNodes[].ChildNodes[];
b := node.HasChildNodes;
ShowMessage(BoolToStr(b)); {-1; 也就是 True}
ShowMessage(IntToStr(node.ChildNodes.Count)); {1}
ShowMessage(node.NodeName); {姓名}
{它里面只有文本"张三", 没有标签, 这时的节点才有 Text 属性}
ShowMessage(node.Text); {张三} {获取"张三"这个文本节点}
node := XMLDocument1.DocumentElement.ChildNodes[].ChildNodes[].ChildNodes[];
b := node.HasChildNodes;
ShowMessage(BoolToStr(b)); {0; 也就是 False 没有子节点了}
ShowMessage(IntToStr(node.ChildNodes.Count)); {0; 子节点总数是 0}
ShowMessage(node.NodeName); {#text; 说明它是一个文本节点}
ShowMessage(node.NodeValue); {张三; 我们也可以取出它的值} {文本节点的 NodeValue 属性等同于它上层节点的 Text 属性}
ShowMessage(node.ParentNode.Text); {张三}
end; //IsTextElement: 判断是否是否具有 Text 属性
procedure TForm1.Button2Click(Sender: TObject);
var
node: IXMLNode;
b: Boolean;
begin
{我们从例子中拿出一个节点, 譬如根节点下的第一个节点:
<人员 职务="科长" 备注="正局级">
<姓名>张三</姓名>
<性别>男</性别>
<年龄>34</年龄>
</人员>
}
{先用节点对象获取这个节点}
node := XMLDocument1.DocumentElement.ChildNodes[]; {这个节点肯定没有 Text 属性}
b := node.IsTextElement;
ShowMessage(BoolToStr(b)); {0; 也就是 False}
ShowMessage(node.NodeName); {人员} {"姓名"节点}
node := XMLDocument1.DocumentElement.ChildNodes[].ChildNodes[]; {"姓名"节点有 Text 属性}
b := node.IsTextElement;
ShowMessage(BoolToStr(b)); {-1; 也就是 True}
ShowMessage(node.NodeName); {姓名} {"张三"这个文本节点}
node := XMLDocument1.DocumentElement.ChildNodes[].ChildNodes[].ChildNodes[]; {文本节点没有 Text 属性}
b := node.IsTextElement;
ShowMessage(BoolToStr(b)); {0; 也就是 False}
ShowMessage(node.NodeName); {#text}
end; end.
Delphi 中的 XMLDocument 类详解(9) - 关于 HasChildNodes 与 IsTextElement的更多相关文章
- Delphi 中的 XMLDocument 类详解(10) - 判断节点类型: 支节点、叶节点、文本节点、空节点
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- Php-SPL库中的迭代器类详解(转)
SPL提供了多个迭代器类,分别提供了迭代访问.过滤数据.缓存结果.控制分页等功能.,因为php总是在不断壮大,我尽可能列出SPL中所有的迭代类.下面其中一些迭代器类是需要php5.4,另外一些如Sea ...
- MFC中CString.Format类详解
在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CString的Format方法给我们进行字符串的 ...
- hadoop中典型Writable类详解
本文地址:http://www.cnblogs.com/archimedes/p/hadoop-writable.html,转载请注明源地址. Hadoop将很多Writable类归入org.apac ...
- Spring框架spring-web模块中的RestTemplate类详解
RestTemplate类是spring-web模块中进行HTTP访问的REST客户端核心类.RestTemplate请求使用阻塞式IO,适合低并发的应用场景. 1. RestTemplate类提供了 ...
- (14)javaWeb中的HttpServletResponse类详解
如果希望了解请求和响应的详细内容,可以看我的“HTTP协议”系列文章 响应体的简单概述: a,响应报文结构: b,常见的状态码,返回服务器处理的结果: c,常见的响应头: HttpServletRes ...
- Delphi中的线程类 - TThread详解
Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...
- JDK中Unsafe类详解
Java中Unsafe类详解 在openjdk8下看Unsafe源码 浅析Java中的原子操作 Java并发编程之LockSupport http://hg.openjdk.java.net/jdk7 ...
- Java中dimension类详解
Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788
随机推荐
- OSI(Open System Interconnect) 网络七层协议
你作为用户想发个快递,你叫来了顺丰,顺丰快递员从你手里拿走了快递,又装进一个盒子,然后把一个快递单子贴在了上面. 快递员回到集散中心,将快递往那一扔不管了,分拣员把快递按投递的省市分开,发往同一地区的 ...
- 【C++】解析C++运行环境的搭建
在本篇文章中,笔者会谈谈如何搭建C++的运行环境.在不同操作系统中,运行C++编译器的命令也各不相同,最常用的编译器是GNU编译器(Linux系统)和微软Visual Studio编译器(Window ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- CentOS 6.5 x64下查看服务版本
1.查看服务是否是64位 [root@Yimmei ~]# getconf LONG_BIT 642.查看服务器版本信息 [root@Yimmei ~]# lsb_release -a LSB Ver ...
- Atitit 押金危机 如何防止用户挤兑
Atitit 押金危机 如何防止用户挤兑 1.1. 用户的押金一定要及时退还,最好实时,避免用户恐慌导致挤兑.. 1 1.2. 退押金有手续费怎么办,最好和用户说明,从用户手机扣缴..不要因小失大.. ...
- Spring Boot项目的接口防刷
说明:使用了注解的方式进行对接口防刷的功能,非常高大上,本文章仅供参考 一,技术要点:springboot的基本知识,redis基本操作, 首先是写一个注解类: import java.lang.an ...
- Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决
问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari
一.集群软硬件环境准备: 操作系统: centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.05台PC作为工作站: ep-bd01 e ...
- SpringMVC Controller单例和多例
对于SpringMVC Controller单例和多例,下面举了个例子说明下. 第一次:类是多例,一个普通属性和一个静态属性. 结果:普通属性:0.............静态属性:0 普通属性:0. ...