📄 productbinding.pas
字号:
var
Node1,Node2:IXMLNode;
Node3:TXmlProductType;
begin
Node1 :=ReadXmlBody(XmlData);
Node3:=TXmlProductType.Create;
try
Node2 := Node1.ChildNodes.FindNode(ROW);
Node3.id := StrToIntdef(Node2.ChildNodes[Uppercase('id')].Text,0);
Node3.pid :=Node2.ChildNodes[Uppercase('pid')].Text;
Node3.name :=Node2.ChildNodes[Uppercase('name')].Text;
Node3.model :=Node2.ChildNodes[Uppercase('model')].Text;
Node3.sunit :=Node2.ChildNodes[Uppercase('sunit')].Text;
Node3.thecurrency :=Node2.ChildNodes[Uppercase('thecurrency')].Text;
Node3.category :=Node2.ChildNodes[Uppercase('category')].Text;
Node3.pictures :=Node2.ChildNodes[Uppercase('pictures')].Text;
Node3.onsaledate :=(Node2.ChildNodes[Uppercase('onsaledate')].Text);
Node3.withdrawdate :=Node2.ChildNodes[Uppercase('withdrawdate')].Text;
Node3.weight :=strtointdef(Node2.ChildNodes[Uppercase('weight')].Text,0);
Node3.originalcode :=Node2.ChildNodes[Uppercase('originalcode')].Text;
Node3.summary :=Node2.ChildNodes[Uppercase('summary')].Text;
Node3.locus :=Node2.ChildNodes[Uppercase('locus')].Text;
Node3.color :=Node2.ChildNodes[Uppercase('color')].Text;
Node3.grade :=Node2.ChildNodes[Uppercase('grade')].Text;
Node3.UserCode :=Node2.ChildNodes[Uppercase('USERCODE')].Text;
Result :=Node3;
Node2.OwnerDocument.Active :=False;
except on E:Exception do
raise Exception.Create(E.Message+ErrorByXml01);
end;
end;
{ProductGetRequest}
function GetPidFromRequest(Xmldata:WideString):string;
var
Node2,Node3:IXMLNode;
begin
Node2:=ReadXmlBody(Xmldata);
try
Node3 := Node2.ChildNodes.FindNode(ProductID);
Result :=Node3.Text;
except on E:Exception do
raise Exception.Create(E.Message+ErrorByXml01);
end;
end;
function GetXmlDocFromString(Xmldata:WideString):IXMLDocument;
var
xmldoc :IXMLDocument;
StrStr: TStringStream;
stream :TMemoryStream;
begin
xmldoc :=NewXMLDocument();
stream:=TMemoryStream.Create;
xmldata :=StringReplace(xmldata,'<?xml version="1.0"?>','<?xml version="1.0" encoding="GB2312"?>',[rfReplaceAll]);
StrStr := TStringStream.Create(Xmldata);
// StrStr := TStringStream.Create(AnsiToUtf8(Xmldata));
try
Stream.CopyFrom(StrStr, 0);
xmldoc.Encoding :='GB2312';
xmldoc.LoadFromStream(Stream);
Result :=xmldoc;
finally
StrStr.Free;
stream.Free;
end;
end;
function CreatePictureXml(imageinfo:TImageInfo;Rcode,Rdesc:string):WideString;
var
Node2 : IXMLNode;
Node3 : IXMLNode;
XMLWString:WideString;
begin
Node2:=WriteXmlBody(PostProductImageRequestNode,False);
if(Rcode<>'') then
begin
Node2.AddChild(ResultCode).Text :=rcode;
Node2.AddChild(ResultDesc).Text :=Rdesc;
end;
Node3:=Node2.AddChild(ProductID);
Node3.Text :=imageinfo.Pid;
Node3:=Node2.AddChild(ImageCodeNode);
Node3.Text :=imageinfo.LabelCode;
Node3 :=Node2.AddChild('Image');
Node3.Text :=imageinfo.ImageStr;
Node2.OwnerDocument.SaveToXML(XMLWString);
Result :=XMLWString;
end;
function GetPictureFromXml(XmlData:WideString;validuser:Boolean=True):TImageInfo;
var
image :TImageInfo;
Node2 : IXMLNode;
Node3 : IXMLNode;
pid,labelcode,base64str :string;
begin
Node2:=ReadXmlBody(XmlData,validuser);
try
Node3 := Node2.ChildNodes.FindNode(ProductID);
pid :=node3.Text;
Node3 := Node2.ChildNodes.FindNode(ImageCodeNode);
labelcode:=node3.Text;
image := TImageInfo.Create('',pid,labelcode);
Node3 := Node2.ChildNodes.FindNode('Image');
if(Node3<>nil) then
begin
base64str:=node3.Text;
image.ImageStr :=base64str;
end;
Result :=image;
Node2.OwnerDocument.Active :=false;
except on E:Exception do
raise Exception.Create(E.Message+ErrorByXml01);
end;
end;
Function CreateGetImageXml(pid,imagecode:string):WideString;
var
Node1 : IXMLNode;
XMLWString:WideString;
begin
node1 :=WriteXmlBody(GetProductImageRequestNode);
Node1.AddChild(ProductID).Text :=pid;
Node1.AddChild(imagecodeNode).Text :=imagecode;
Node1.OwnerDocument.SaveToXML(XMLWString);
Node1.OwnerDocument.Active :=false;
Result :=XMLWString;
end;
//创建测试xml
Function CreateLoginXML(userid,password:string):widestring;
var
bodynode:IXMLNode;
begin
bodynode :=WriteXmlBody(LoginRequestNode,false);
bodynode.AddChild('UserID').Text :=userid;
bodynode.AddChild('Password').Text :=password;
Result :=bodynode.OwnerDocument.XML.Text;
bodynode.OwnerDocument.Active :=false;
end;
function GetResultMsg(xmldata:WideString):TReturnMsg;
var
bodynode:IXMLNode;
begin
bodynode := ReadXmlBody(xmldata,False);
Result.ResultCode :=bodynode.ChildNodes[ResultCode].Text;
Result.ResultDesc :=bodynode.ChildNodes[ResultDesc].Text;
if(bodynode.ChildNodes[ServiceIDNode]<>nil) then
Result.ServiceID :=bodynode.ChildNodes[ServiceIDNode].Text;
if(bodynode.ChildNodes['Image']<>nil) then
Result.ImageStr :=bodynode.ChildNodes['Image'].Text;
end;
function CreateXmlFromProduct(product:TXmlProductType):Widestring;
var
bodynode:IXMLNode;
begin
bodynode :=WriteXmlBody(ProductUpdateRequestNode,True);
bodynode :=bodynode.AddChild(ROW);
bodynode.AddChild(Uppercase('pid')).Text :=product.pid;
bodynode.AddChild(Uppercase('name')).Text :=product.name;
bodynode.AddChild(Uppercase('model')).Text :=product.model;
bodynode.AddChild(Uppercase('unit')).Text :=product.sunit;
bodynode.AddChild(Uppercase('thecurrency')).Text :=product.thecurrency;
bodynode.AddChild(Uppercase('category')).Text :=product.category;
bodynode.AddChild(Uppercase('pictures')).Text :=product.pictures;
bodynode.AddChild(Uppercase('onsaledate')).Text :=product.onsaledate;
bodynode.AddChild(Uppercase('withdrawdate')).Text :=product.withdrawdate;
bodynode.AddChild(Uppercase('weight')).Text :=IntToStr(product.weight);
bodynode.AddChild(Uppercase('originalcode')).Text :=product.originalcode;
bodynode.AddChild(Uppercase('summary')).Text :=product.summary;
bodynode.AddChild(Uppercase('locus')).Text :=product.locus;
bodynode.AddChild(Uppercase('psize')).Text :=product.psize;
bodynode.AddChild(Uppercase('color')).Text :=product.color;
bodynode.AddChild(Uppercase('grade')).Text :=product.grade;
bodynode.AddChild(Uppercase('usercode')).Text :=product.UserCode;
Result :=bodynode.OwnerDocument.XML.Text;
bodynode.OwnerDocument.Active :=false;
end;
Function CreateGetImageResponse(dataXml:WideString):TReturnMsg;
begin
;
end;
Function CreateDateXml(datetype:TdateType):WideString;
var
bodynode:IXmlNode;
begin
bodynode.AddChild('DataType').Text :=datetype.DateType;
bodynode.AddChild('Days').Text :=inttostr(datetype.Days);
result :=bodynode.OwnerDocument.XML.Text;
bodynode.OwnerDocument.Active :=false;
end;
Function ReadProdcutList(DataXml:WideString):TReturnListMsg;
var
bodynode:IxmlNode;
node1:IXMLNode;
begin
bodynode :=ReadXmlBody(dataXml,false);
Result.ResultCode :=bodynode.ChildNodes[ResultCode].Text;
Result.ResultDesc :=bodynode.ChildNodes[ResultDesc].Text;
result.ProductList :=Tstringlist.Create;
node1 :=bodynode.ChildNodes[ROW];
while node1<>nil do
begin
result.ProductList.Add(node1.ChildNodes['PID'].Text+'-'+node1.ChildNodes['NAME'].Text);
node1 :=bodynode.NextSibling;
end;
end;
Function CreatePidXml(pid:String):WideString;
var
bodynode:IxmlNode;
begin
bodynode :=WriteXmlBody(ProductGetRequestNode);
bodynode.AddChild(ProductID).Text :=pid;
result :=bodynode.OwnerDocument.XML.Text;
bodynode.OwnerDocument.Active :=false;
end;
Function GetProductinfo(dataXml:WideString):TReturnPtypeListMsg;
var
bodynode:IxmlNode;
node2:IXMLNode;
product :TXmlProductType;
begin
bodynode :=ReadXmlBody(dataXml,false);
Result.ResultCode :=bodynode.ChildNodes[ResultCode].Text;
Result.ResultDesc :=bodynode.ChildNodes[ResultDesc].Text;
result.ProductList :=Tlist.Create;
node2 :=bodynode.ChildNodes[ROW];
while node2<>nil do
begin
product :=TxmlProductType.Create;
product.id := StrToIntdef(Node2.ChildNodes[Uppercase('id')].Text,0);
product.pid :=Node2.ChildNodes[Uppercase('pid')].Text;
product.name :=Node2.ChildNodes[Uppercase('name')].Text;
product.model :=Node2.ChildNodes[Uppercase('model')].Text;
product.sunit :=Node2.ChildNodes[Uppercase('sunit')].Text;
product.thecurrency :=Node2.ChildNodes[Uppercase('thecurrency')].Text;
product.category :=Node2.ChildNodes[Uppercase('category')].Text;
product.pictures :=Node2.ChildNodes[Uppercase('pictures')].Text;
product.onsaledate :=(Node2.ChildNodes[Uppercase('onsaledate')].Text);
product.withdrawdate :=Node2.ChildNodes[Uppercase('withdrawdate')].Text;
product.weight :=strtointdef(Node2.ChildNodes[Uppercase('weight')].Text,0);
product.originalcode :=Node2.ChildNodes[Uppercase('originalcode')].Text;
product.summary :=Node2.ChildNodes[Uppercase('summary')].Text;
product.locus :=Node2.ChildNodes[Uppercase('locus')].Text;
product.color :=Node2.ChildNodes[Uppercase('color')].Text;
product.grade :=Node2.ChildNodes[Uppercase('grade')].Text;
product.UserCode :=Node2.ChildNodes[Uppercase('USERCODE')].Text;
result.ProductList.Add(product);
node2 :=bodynode.NextSibling;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -