• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API
傻乐tao 2003年10月16日
这段时间要用 delphi写一个ActiveX ,其中用到XML交互,所以写了一个TXmlHelper类,和大家共享,并希望大家提出修改意见
unit XmlHelper;

interface

uses
Windows, Messages, SysUtils, Variants, Classes,Dialogs,Graphics,Controls,Forms,ComCtrls,
StdCtrls,ExtCtrls,xmldom, XMLDoc, XMLIntf,Math,Contnrs;

type

TXmlNodeObject = class(TObject)
public
XmlNode : IXmlNode;
end;

//-----------------------------------------------
// Xml装载方式
//
//-----------------------------------------------
TXmlLoadType = (FromString,FromLocalFile,FromURL);

TXmlHelper = class(TObject)
private
m_XmlDoc: IXmlDocument;
m_sLastErrorMessage: WideString;

function GetDocument:IXmlDocument;
function GetEncoding:WideString;
procedure SetEncoding(const Value: WideString);
function GetRootNode: IXmlNode;

public
Constructor Create;overload;
Constructor Create(xmlDoc:IXmlDocument);overload;
Destructor Free;

property Document:IXmlDocument read GetDocument;
property Encoding:WideString read GetEncoding write SetEncoding;
property RootNode:IXmlNode read GetRootNode;

function SaveToFile(sTargetFileName : WideString):Boolean;
function GetXmlString: WideString;
function LoadXML(sourceXMLOrFile:WideString;loadType:TXmlLoadType):Boolean;


function GetAttributeValue(node : IXmlNode; sAttributeName : WideString):WideString;
function GetAttributeInt32(node : IXmlNode; sAttributeName : WideString):Integer;
function GetAttributeDouble(node : IXmlNode; sAttributeName : WideString):Double;
function GetAttributeBoolean(node : IXmlNode; sAttributeName : WideString):Boolean;

function GetElementValue(node : IXmlNode):WideString;
function GetElementInt32(node : IXmlNode):Integer;
function GetElementDouble(node : IXmlNode):Double;
function GetElementBoolean(node : IXmlNode):Boolean;

function GetChildElementValue(parentNode : IXmlNode;sElementName : WideString):WideString;
function GetChildElementInt32(parentNode : IXmlNode;sElementName : WideString):Integer;
function GetChildElementDouble(parentNode : IXmlNode;sElementName : WideString):Double;
function GetChildElementBoolean(parentNode : IXmlNode;sElementName : WideString):Boolean;


function GetFirstChildXmlNodeFromRoot(sElementName : WideString) : TXmlNodeObject;
function GetFirstChildXmlNode(parentNode : IXmlNode;sElementname : WideString) : IXmlNode;
function GetChildNodesFromRoot( sElementName : WideString ) : TObjectList;
function GetRecursiveChildNodesFromParent(parentNode : IXmlNode;sElementName : WideString) : TObjectList;

function CreateNodeElement(parentNode : IXmlNode ; sElementName,sElementValue : WideString) : IXmlNode;
//function CreateComment(insertAfterThisNode : IXmlNode;sVal : WideString) : IXmlNode;
//function CreateXmlDeclaration(sVersion,sEncoding,sStandalone : WideString) : IXmlNode;
function DeleteNodeElement(targetNode : IXmlNode) : Boolean;
function ModifyNodeElementValue(targetNode : IXmlNode;sNewElementValue : WideString) : Boolean;

function CreateNodeAttribute(targetNode : IXmlNode;sAttrName,sAttrValue : WideString) : Boolean;
function DeleteNodeAttribute(targetNode : IXmlNode;sAttrName : WideString) : Boolean;
function ModifyNodeAttributeValue(targetNode : IXmlNode;sAttrName,sNewAttrValue : WideString) : Boolean;

function Encode(input : string) : string;
function Decode(input : string) : string;

end;



...全文
4 点赞 收藏 8
写回复
8 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Delphi
创建于2007-08-02

1451

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告