unit XML;
interface
uses
XMLDoc, XMLIntf, XMLDom, SysUtils, Variants;
type
TNode = class
private
_XML: IXMLDocument;
FXML: TXMLDocument;
FrootNode: IXMLNode;
_vPropName: string;
function FindNode(const NodeName: string): IXMLNode;
function GetAsString: string;
procedure SetAsString(Value: string);
Function GetAsInteger: Integer;
procedure SetAsInteger(value: integer);
function GetAsChildNode: IXMLNode;
procedure SetAsChildNode(Value: IXMLNode);
public
property AsChildNode: IXMLNode read GetAsChildNode write SetAschildNode;
property AsInteger: Integer read GetAsInteger write SetAsInteger;
property AsString: string read GetAsString write SetAsString;
procedure del;
constructor create;
destructor destroy; override;
end;
type
TXML = class(TNode)
private
_XMLStr: String;
public
function Text: string;
function NodeByName(NodeName: string): TNode;
procedure Init;
constructor create; overload;
constructor create(XMLStr: string); overload;
destructor destroy; override;
end;
implementation
uses
Xml.omnixmldom;
{ TXML }
constructor TXML.create;
begin
Inherited;
end;
constructor TXML.create(XMLStr: string);
begin
end;
destructor TXML.destroy;
begin
inherited;
end;
procedure TXML.Init;
begin
_XMLStr := _XML.XML.Text;
end;
function TNode.FindNode(const NodeName: string): IXMLNode;
var
_RootNode: IXMLNode;
begin
result := nil;
_RootNode := _XML.DocumentElement;
if _RootNode = nil then
begin
raise Exception.Create('沒有根節(jié)點');
exit;
end;
result := _RootNode.ChildNodes.FindNode(NodeName);
end;
function TXML.NodeByName(NodeName: string): TNode;
begin
_vPropName := NodeName;
FRootNode := FindNode(NodeName);
result := Self;
end;
function TXML.Text: string;
begin
result := _XMLStr;
end;
{ TNode }
constructor TNode.create;
var
_RootNode: IXMLNode;
begin
FXML := TXMLDocument.Create(nil);
_XML := FXML;
FXML.DOMVendor := GetDOMVendor('Omni XML');
_XML.Active := True;
_RootNode := _XML.CreateNode('xml');
_XML.DocumentElement := _RootNode;
end;
procedure TNode.del;
var
NodeList: IXMLNodeList;
_Node: IXMLNode;
begin
NodeList := _XML.DocumentElement.ChildNodes;
_Node := NodeList.FindNode(_vPropName);
NodeList.Remove(_Node);
end;
destructor TNode.destroy;
begin
end;
function TNode.GetAsChildNode: IXMLNode;
begin
result := FRootNode;
end;
function TNode.GetAsInteger: Integer;
var
tmp: string;
begin
tmp := VarToStrDef(FRootNode.NodeValue, '0');
if not TryStrToInt(tmp, result) then
raise Exception.Create('不是數(shù)值');
end;
function TNode.GetAsString: string;
var
_TmpNode: IXMLNode;
begin
result := VarToStrDef(FrootNode.NodeValue, '');
end;
procedure TNode.SetAsChildNode(Value: IXMLNode);
var
_RootNode: IXMLNode;
begin
_RootNode := Value;
if FRootNode = nil then
begin
_RootNode := _XML.CreateNode(_vPropName);
FRootNode := _XML.DocumentElement;
_RootNode.ChildNodes.Add(Value);
FRootNode.ChildNodes.Add(_RootNode)
end
else begin
FRootNode.ChildNodes.Add(_RootNode);
end;
end;
procedure TNode.SetAsInteger(value: integer);
var
_ChildNode: IXMLNode;
_rootNode: IXMLNode;
begin
if FRootNode = nil then
begin
_RootNode := _XML.CreateNode(_vPropName);
FRootNode := _XML.DocumentElement;
_ChildNode := _XML.CreateNode(IntToStr(Value), ntText);
_RootNode.ChildNodes.Add(_ChildNode);
FRootNode.ChildNodes.Add(_RootNode)
end
else begin
FRootNode.Text := IntToStr(value);
end;
end;
procedure TNode.SetAsString(Value: string);
var
_ChildNode: IXMLNode;
_rootNode: IXMLNode;
begin
if FrootNode = nil then
begin
_RootNode := _XML.CreateNode(_vPropName);
FRootNode := _XML.DocumentElement;
_ChildNode := _XML.CreateNode(Value, ntCData); //_vPropName);
_RootNode.ChildNodes.add(_ChildNode);
FrootNode.ChildNodes.Add(_RootNode);
end
else begin
FRootNode.Text := Value;
end;
end;
end.
Delphi XML 增刪改查
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門具垫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人试幽,你說我怎么就攤上這事筝蚕。” “怎么了铺坞?”我有些...
- 文/不壞的土叔 我叫張陵起宽,是天一觀的道長。 經(jīng)常有香客問我济榨,道長坯沪,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任擒滑,我火速辦了婚禮腐晾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘橘忱。我一直安慰自己赴魁,他們只是感情好卸奉,可當(dāng)我...
- 文/花漫 我一把揭開白布钝诚。 她就那樣靜靜地躺著,像睡著了一般榄棵。 火紅的嫁衣襯著肌膚如雪凝颇。 梳的紋絲不亂的頭發(fā)上潘拱,一...
- 文/蒼蘭香墨 我猛地睜開眼袱饭,長吁一口氣:“原來是場噩夢啊……” “哼川无!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起虑乖,我...
- 正文 年R本政府宣布,位于F島的核電站边臼,受9級特大地震影響哄尔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠并,卻給世界環(huán)境...
- 文/蒙蒙 一岭接、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧臼予,春花似錦鸣戴、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缰雇,卻和暖如春入偷,著一層夾襖步出監(jiān)牢的瞬間追驴,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 為什么會有dom河泳,dom4j這些解析xml的工具呢?下面是百度的年栓。Dom4j JDom等xml解析工具定義了對xm...
- 0. Thanks Android解析XML的三種方式Android幾種解析XML方式的比較android xml...
- 0. Thanks Android解析XML的三種方式Android幾種解析XML方式的比較android xml...
- 界面預(yù)覽 準(zhǔn)備XML數(shù)據(jù) 定義XML數(shù)據(jù)對象對象的User類 實現(xiàn)代碼