⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wxmls.pas

📁 一组实用的公共函数
💻 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 + -