TXMLDocument use case (Delphi)
Description
This example illustrates the basic operations on an XML document.
Code
procedure CreateDocument;
const
CFilename = 'file.xml';
var
LDocument: IXMLDocument;
LNodeElement, NodeCData, NodeText: IXMLNode;
begin
LDocument := TXMLDocument.Create(nil);
LDocument.Active := True; { Define document content. }
LDocument.DocumentElement := LDocument.CreateNode('ThisIsTheDocumentElement', ntElement, '');
LDocument.DocumentElement.Attributes['attrName'] := 'attrValue';
LNodeElement := LDocument.DocumentElement.AddChild('ThisElementHasText', -1);
LNodeElement.Text := 'Inner text.';
NodeCData := LDocument.CreateNode('any characters here', ntCData, '');
LDocument.DocumentElement.ChildNodes.Add(NodeCData);
NodeText := LDocument.CreateNode('This is a text node.', ntText, '');
LDocument.DocumentElement.ChildNodes.Add(NodeText); LDocument.SaveToFile(CFilename);
end; procedure RetrieveDocument;
const
CFilename = 'file.xml';
CAttrName = 'attrName';
HTAB = #9;
var
LDocument: IXMLDocument;
LNodeElement, LNode: IXMLNode;
LAttrValue: string;
I: Integer;
begin
LDocument := TXMLDocument.Create(nil);
LDocument.LoadFromFile(CFilename); { Find a specific node }
LNodeElement := LDocument.ChildNodes.FindNode('ThisIsTheDocumentElement'); if (LNodeElement <> nil) then
begin
{ Get a specific attribute }
Writeln('Getting attribute...');
if (LNodeElement.HasAttribute(CAttrName)) then
begin
LAttrValue := LNodeElement.Attributes[CAttrName];
Writeln('Attribute value: ' + LAttrValue);
end; { Traverse child nodes }
Writeln(sLineBreak, 'Traversing child nodes...' + sLineBreak);
for I := 0 to LNodeElement.ChildNodes.Count - 1 do
begin
LNode := LNodeElement.ChildNodes.Get(I);
{ Display node name }
Writeln(sLineBreak + 'Node name: ' + LNode.NodeName);
{ Check if the node type is Text. }
if LNode.NodeType = ntText then
begin
Writeln(HTAB + 'This is a node of type Text. The text is: ' + LNode.Text);
end;
{ Check if the node is text element. }
if LNode.IsTextElement then
begin
Writeln(HTAB + 'This is a text element. The text is: ' + LNode.Text);
end;
end;
end;
end;
TXMLDocument use case (Delphi)的更多相关文章
- Delphi中使用TXMLDocument控件应注意的问题 转
Delphi中使用TXMLDocument控件应注意的问题 delphiconstructorxmlclass今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却 ...
- Delphi中TxmlDocument控件的用法 转
Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面. 在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解. 1<?xm ...
- Delphi中使用TXMLDocument控件应注意的问题
今天写了一个类,其中用到了TXMLDocument控件.这个控件我是要动态生成的. 但是却遇到了非常奇怪的问题,下面分享一下 procedure TMainForm.Button1Click(Send ...
- delphi中Case语法的使用方法
Case 语句If...Then…Else 语句适合选项较少的情况,如果有很多选项的话利用If 语句就比较麻烦,在这种情况下,Case 语句就容易多了.Case 语句的语法如下: case <表 ...
- Delphi中动态调用TXMLDocument的经历
var vXMLDocument: TXMLDocument;begin vXMLDocument := TXMLDocument.Create('c:/temp/temp.xml'); Cap ...
- Delphi 复习代码
1.取得可文件路径 Path := ExtractFilePath(Application.ExeName); //取得可执行文件路径 TXMLDocument.Create(ExtractFileP ...
- Delphi Xml
用递归方法,使用 xml 文档生成 Treeview 树形视图.由于是动态生成,所以可以通过修改 xml 的逻辑来定制 Treeview 的结构,从而实现了 xml 对 Treeview 的动态配置, ...
- Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
转载自:http://www.ylzx8.cn/windows/delphi/73200.html 本人在做一个测试,服务器是IOCP的,我假定最大链接数是50000个. 测试背景:如果每个链接之间的 ...
- Delphi容器类之---TList、TStringList、TObjectList,以及一个例程的代码分析
转载自:http://blog.csdn.net/jqandjq/article/details/5429137 看了这里标题,大家可能以为我会谈TListBox控件,那就错了.我要谈的是Delphi ...
随机推荐
- df -h执行卡住不动问题解决【转】
昨天生产环境报日志写不进去了,因此 登陆线上环境后,习惯用df -h命令查看空间使用情况,结果发现该命令执行半天也没有返回. 因此使用mount命令查看该机器上的目录: [conversant@swi ...
- win10 无法打开 APICloud Studio 2 的解决方案
坑爹. 新搭建了系统 apicloud studio2 打开无反应 无任何报错提示 双击没有方案.弄了一天 最后搞定. . 百度搜索 win10 null.sys 替换进去 C:/Win ...
- 使用maven命令终端构建一个web项目及发布该项目
构建环境: maven版本:3.3.9 系统平台:Windows7 x64 JDK版本:1.7 构建步骤: 1.打开maven安装目录,在地址栏输入cmd进入命令窗口 2.输入命令mvn archet ...
- Qt 数字和字符处理总结
1. 四舍五入保留小数几位 QString str="12.3456789"; double d1=str.toDouble(); qDebug()<<"d1 ...
- jstack查看Java堆栈信息
命令 jps 查看进程id jstack 1234 查看该进程的线程堆栈信息 对于每个线程,都有如下信息: 线程名,如“main”线程属性(如果是Daemon线程,会有Daemon标识,否则,什么都没 ...
- Shiro:授权控制
对容易忽略的地方记录如下: 1.需要引入下面2个依赖,具体版本根据自身环境修改: <dependency> <groupId>org.apache.geronimo.bundl ...
- 【LOJ】#2107. 「JLOI2015」城池攻占
题解 用一个平衡树维护能攻占到u点的骑士,合并到父亲的时候去掉攻击力小于父亲生命值的那部分,只要把那棵树拆掉并且将树中的所有骑士更新一下答案,用无旋式treap很好写 合并的时候只要启发式合并就可以了 ...
- ERROR 2003 (HY000): Can't connect to MySQL server on "192.168.xxx.xxx" (111)
mac homebrew 安装的mysql5.6 除本机外无法被其他ip的电脑访问. 网上查原因 有几个: 1.my.cnf配置中 查看是否有 bind-address = 127.0.0.1 ...
- PHP函数之trigger_error
在程序开发中,如果我们编码不规范,比如调用不存在的变量.语法错误.少了个逗号,这些都会引起系统报错并进行提示,但是今天,突然发现PHP还有这样一个函数,用于自动触发一个报错提示,并且会将报错信息写入p ...
- ubuntu16耳机没声音解决
装完ubuntu16后又装了英伟达的显卡驱动,安装了网易云音乐后,突然发现电脑没声音,使用了如下方法解决 首先用在终端输入如下命令,下载pulseaudio音量控制软件 sudo apt instal ...