Lazarus Reading XML- with TXMLDocument and TXPathVariable

也就是使用XPath的方式,具体语法规则查看http://www.w3school.com.cn/xpath/xpath_syntax.asp,说明得相当详细。这里列举例子是说明在Lazarus/FPC下具体应用于实现,以及注意事项。首先可以构建一个“ReadXPath”的函数方便调用。毕竟每次使用EvaluateXPathExpression后还有些任务要处理……。

view plaincopy to clipboardprint

  1. function ReadXPath(const aNode: TDOMNode; const aPath: string): TDOMNode;
  2. var
  3. rv: TXPathVariable;
  4. tl: TFPList;
  5. begin
  6. Result := nil;
  7. if Assigned(aNode) then
  8. begin
  9. rv := EvaluateXPathExpression(aPath, aNode);
  10. if Assigned(rv) then
  11. begin
  12. tl := rv.AsNodeSet;
  13. if Assigned(tl) then
  14. begin
  15. if tl.Count > 0 then
  16. begin
  17. Result := TDOMNode(tl[0]);
  18. end;
  19. end;
  20. end;
  21. end;
  22. end;

具体使用了,要记住返回的其实是“元素”,就算强制约定了“属性”——[@Attrib],所以要读取任何值,都要按“扫描到元素”的方式来处理。

view plaincopy to clipboardprint

  1. function ReadCFG: boolean;
  2. var
  3. .....
  4. vConfigXml: string = ‘‘;
  5. HistoryPath: string = ‘‘;
  6. TracePath: string = ‘‘;
  7. vXP: TDOMNode;
  8. .....
  9. begin
  10. Result := False;
  11. ReadXMLFile(xmlCfg, vConfigXml);
  12. vXP := ReadXPath(xmlCfg, ‘/Config/HistoryPath[@value]‘);
  13. if Assigned(vXP) then
  14. begin
  15. if vXP.HasAttributes then
  16. HistoryPath := vXP.Attributes.Item[0].NodeValue;
  17. end;
  18. vXP := ReadXPath(xmlCfg, ‘/Config/TracePath[@value]‘);
  19. if Assigned(vXP) then
  20. begin
  21. if vXP.HasAttributes then
  22. TracePath := vXP.Attributes.Item[0].NodeValue;
  23. end;
  24. if (HistoryPath <> ‘‘) and (TracePath <> ‘‘) then
  25. .....
  26. end;
时间: 2024-11-11 00:49:42

Lazarus Reading XML- with TXMLDocument and TXPathVariable的相关文章

WCF常见异常-The maximum string content length quota (8192) has been exceeded while reading XML data

异常信息:The maximum string content length quota (8192) has been exceeded while reading XML data 问题:调用第三方的WCF服务,产生上述异常信息 分析: 在公布WCF host端时,要确保host端以及客户端的设置允许一定大小的数据传输. 如果未设置传输大小,maxStringContentLength默认大小为8192. 1)如果第三方服务未设置maxStringContentLength或者设置的maxS

WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误

原文:WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误 在服务端中定义接口太多时,在客户端的服务引用时,报错误: 元数据包含无法解析的引用:“net.tcp://localhost:8081/BaseData/mex”.    XML 文档中有错误.    读取 XML 数据时,超出最大名称表字符计数配额 (1

The maximum string content length quota (8192) has been exceeded while reading XML data

原文:The maximum string content length quota (8192) has been exceeded while reading XML data 问题场景:在我们WCF服务发布后,我们要确保服务端以及客户端的配置文件允许合适大小的传输设置.笔者在发布WCF服务时,服务端的绑定未做传输大小的设置(采用了默认,maxStringContentLength默认大小为8192),而我们在传输序列化的数据时,大小超过了这个限制. 读取 XML 数据时,超出最大字符串内容

Dive into python3

Table of Contents What’s New in “Dive Into Python 3” a.k.a. “the minus level” Installing Python Diving In Which Python Is Right For You? Installing on Microsoft Windows Installing on Mac OS X Installing on Ubuntu Linux Installing on Other Platforms U

Some words about Qt DOM Node, Element and Attribut

Add Instruction Node Every valid XML must contain processing instruction. XML is widely used for HTML, SVG, XLS etc. So make sure your XML file has valid instruction of its type and encoding. The following line is a sample XML processing instruction.

delphi中的XML解析控件TXMLDocument的用法

Delphi中TXMLDocument控件的用法 Delphi中对XML文件的解析做的很好,比直接使用MS的MSXML2_TLB中的接口要方便很多,现称述于下面. 在讲之前先给出一个XML实例,在讲某些部分是要结合实例比较容易理解. 1<?xmlversion="1.0"encoding="gb2312"?><!--文档版本信息,注释格式同HTML--> 2<XMLPackage> 3<clinetinfoip=”202.1

Jet Brains IDEA reading ....pom.xml

参考:http://ask.csdn.net/questions/674876 会导致关闭不了.害的我又下载重新安装,也不行.原因是本地网络问题. 方法: win+ R.打开cmd.输入netsh winsock reset,然后重启电脑,我的就是这样好的. 原文地址:https://www.cnblogs.com/herosoft/p/8351733.html

[从零搭网站五]http网站Tomcat配置web.xml和server.xml

点击下面连接查看从零开始搭网站全系列 从零开始搭网站 上一章我们在CentOS下搭建了Tomcat,但是还是没有跑起来...那么这一章就把最后的配置给大家放上去. 有两种方式:一种是用 rm -f 给这两个文件删掉,再用vim建新的出来.另一种是vim编辑,输入:set nu 显示行号,再输入:1,最后一行的行号d 把全文删掉. 然后再复制粘贴我给你们的配置文件就行. web.xml  , 完全不用修改,直接复制就行了: <?xml version="1.0" encoding=

Spring mvc 中使用ftl引用共通文件出错 FreeMarker template error: Error reading included file &quot;/WEB-INF/ftl/common/errormessage.ftl&quot;

初次接触spring mvc,想做一个小的练习项目,结果在ftl文件中引用其它的共通ftl文件时出错. 目录结构如图所示,想在login.ftl中引用common下的errormessage.ftl <#include '/WEB-INF/ftl/common/errormessage.ftl' /> 结果画面报错: FreeMarker template error: Error reading included file "/WEB-INF/ftl/common/errormes