📄 wxmls.pas
字号:
unit wXMLS;
interface
function GetXMLLeafNode(const XMLString, Node: String): String;
function XMLNode(const Name, Value: String): String;
function GetXMLNodeName(const XMLString: String): String;
function ExtractFirstXMLNode(var NodeName: String; var XMLNode: String; var XMLString: String): Boolean;
function MakeXMLPackage(const TradeCode, SerialNo: String;
const PackageType: String = 'Answer'; const PackageVersion: String = 'S0001';
const PackageInterface: String = '0'): String;
procedure InsertXMLNode(var XML: String; const Node, Text: String);
implementation
uses
SysUtils;
function XMLNode(const Name, Value: String): String;
begin
Result := Format('<%s>%s</%0:s>', [Name, Value]);
end;
function GetXMLLeafNode(const XMLString, Node: String): String;
var
i, j, l: Integer;
begin
l := Length(Node);
i := Pos('<'+Node+'>', XMLString);
j := Pos('</'+Node+'>', XMLString);
if (i > 0) and (j > i ) then begin
Result := Copy(XMLString, i+l+2, j-i-l-2);
end else begin
Result := '';
end;
end;
function GetXMLNodeName(const XMLString: String): String;
var
i, j: Integer;
begin
i := Pos('<', XMLString);
j := Pos('>', XMLString);
if j > i then begin
Result := Copy(XMLString, i+1, j-i-1);
end else begin
Result := ''
end;
end;
// 提取XML字符串中的第一个XML根节点
// 提取成功返回True, NodeName返回根节点名称, XMLNode返回根节点内容, XMLString返回该根节点后面的字符串
// 当字符串中没有一个完整的XML根节点时返回False
// 当字符串中没有XML节点起始标志时NodeName返回空
function ExtractFirstXMLNode(var NodeName: String; var XMLNode: String; var XMLString: String): Boolean;
var
l, i, j: Integer;
begin
Result := False;
NodeName := GetXMLNodeName(XMLString);
if NodeName <> '' then begin
i := Pos('<'+NodeName+'>', XMLString);
j := Pos('</'+NodeName+'>', XMLString);
if (i > 0) and (j > i ) then begin
l := Length(NodeName);
XMLNode := Copy(XMLString, i+l+2, j-i-l-2);
XMLString := Copy(XMLString, j+l+3, Length(XMLString));
Result := True;
end;
end;
end;
function MakeXMLPackage(const TradeCode, SerialNo: String;
const PackageType: String = 'Answer'; const PackageVersion: String = 'S0001';
const PackageInterface: String = '0'): String;
begin
Result := '<?xml version="1.0" encoding="GB2312"?><Package><Version>'
+ PackageVersion + '</Version><PackageType>' + PackageType + '</PackageType><Interface>'
+ '</Interface><TradeCode>' + TradeCode + '</TradeCode><SerialNo>' + SerialNo + '</SerialNo></Package>';
end;
procedure InsertXMLNode(var XML: String; const Node, Text: String);
begin
Insert('<' + Node + '>' + Text + '</' + Node + '>', XML,
Pos('</Package>', XML));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -