Pascal基礎(九)-Pascal解析Xml

Pascal基礎(九)-Pascal解析Xml

前言

xml和json是文本數據交換的主流格式. web端開發的流行是json在當下對比xml可能使用率高一些. 但是xml也沒有到用不到的地步

除了主角Xml,本篇還需要Pascal的幾個基礎知識點如下

  • 泛型
  • 擴展方法
  • 前置聲明
  • 轉義符
  • oop

前置基礎知識點

現代Pascal面向對象編程設計(OOP)

目前OOP應該算是主流開發範式, Pascal歷史悠久變動繁雜,包袱很重所以只使用現代Pascal的特性.更具體的OOP的說明可以查看Pascal OOP基礎Pascal OOP續

轉義符

Pascal中轉義符和C系語言(C,C#,C++,Java)等不同,不是使用\,而是使用'#ascii'來實現. 例子說明可以參考Pascal 基礎

前置聲明

和C語言類似,未聲明或在定義的方法和類不能使用.現代的C#,Java等語言沒有這種限制.也就是說被調用方(方法或類)需要定義在調用方之前 由於一則需要注意定義順序浪費腦力二則有循環的has-a關係,所以只是調整順序不能很好的解決問題 解決方法也是和C語言類似,需要一個聲明

type TA = class;
TB = class
public
	a:TA;
end;
TA = class
public
	b:TB;
end;
procedure A();forward;
procedure B();
begin
	A();
end;
procedure A();
begin
	writeln('hello');
end;

擴展方法

在不修改原有類的代碼的前提下,爲了給已有類新增方法.一般的做法就是定義一個靜態的方法去調用.看起來不是太優雅.於是有了擴展方法這個語法糖. C#中也允許這個設計.

先看需要解決的問題的場景,即無擴展方法的通常做法 爲了給一個現有的類TStudent新增一個方法MoveTo,如果不修改TStudent的源代碼的情況下(也可能是無法修改,比如是第三方提供,不允許修改)

type TStudentHelper = class
class procedure MoveTo(t:TStudent;x,y:integer);
end;

procedure TestMoveTo;
var s:TStudent;
begin
	s := TStudent.Create;
	TStudentHelper.MoveTo(s,10,10);
end;

擴展方法的使用方式如下 首先定一個helper

type TStudentHelper = class helper for TStudent
procedure MoveTo(x,y:integer);
end;

這樣定義可以在MoveTo中方法TStudent的成員變量. 使用後的效果就是這樣.和一般的方法看起來一樣

procedure MoveTest;
var s:TStudent;
begin
    s := TStudent.Create;
	s.MoveTo(10,20);
end;

泛型

泛型可以生產力, 可以在編譯時發現問題所在. 日常使用很是頻繁. 具體的說明可以傳送到Pascal 泛型

Pascal解析Xml

由於Xml語言無關,雖然不同語言API不同 ,但是大體思路一致

 var
    doc: TXMLDocument;
ReadXMLFile(Doc, 'demo.xml');

從文件中創建TXmlDocument 然後遍歷根結點,子節點,節點屬性.

思路清楚接下來的就是熟悉一個API的官方文檔即可.如果你用的是Lazarus,可以按住Ctrl,鼠標左鍵點擊跳轉到類的定義.

完整代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章