马上要进行一个系统的开发,计划后台服务器用VC++实现,前台用Delphi。中间用自己做的通讯服务器进行通讯----使用TCP/IP.通讯包数据为XML格式。
请问,我该怎么在前端在解包后取得XML中的数据(可能我还需要把从XML中取得的数据进行类包装),Delphi是否有现成的控件可用?TXMLDocument?该怎么用呢?
(或许小弟的问题很幼稚吧,呵,没有办法,没有弄过这个东西)
请问,我该怎么在前端在解包后取得XML中的数据(可能我还需要把从XML中取得的数据进行类包装),Delphi是否有现成的控件可用?TXMLDocument?该怎么用呢?
(或许小弟的问题很幼稚吧,呵,没有办法,没有弄过这个东西)
解决方案 »
- 关于Delphi6. 与delphi 7.0的问题,有心兴趣的朋友见来看看?
- 为什么在赋直查询的时候老出现所赋予的直 is not a valid component name 会是什么原因呀
- 请问,装了SkinEngine在delphi的控件栏看不见,是不是那里要添加一下?
- delphi中使用DLL释放的一个问题,希望高手指点
- 在98下是不是不可以用dbexpress呢?
- 谁能帮我把这个美眉解出来?
- 如何从交易所获取第一手行情
- 怎样编写漂亮的窗体?
- Dll中创建OLE控件时抛出EOleSysError异常,请高手指点!!多谢!
- Delphi , MO, MOIMS, 开发WebGis中遇到的问题
- 关于DataSet的Cancel或DataBase的RollBack问题
- 在D7中,我用ADOQuery和DBEdit做数据库,会出现以下异常:ADOQuery1不在dsinsert或dsEdit状态,在哪里可拦住.
我们自己做的控件,文件格式按xml的格式,不过解析文本是用自己写的代码。TXMLDocument可以用,不过在delphi6下写文件会有问题,解决不了后没用它,delphi7下应该可以很好的使用的。解析xml文件中的内容。
//以下将一个xml文件中的信息写入一个二维数组中
procedure GetXml(getStrLst: TStringList);
var
Common_Node: IXMLNode;
commonchild_Node: IXMLNode;
record_Node: IXMLNode;
recordchild_Node: IXMLNode;
field_Node: IXMLNode;
I,J : Integer;
XMLDocument1: TXMLDocument;
begin
//******* XMLDocument1:=TXMLDocument.Create(nil)²»ÄÜ´´½¨¶ÔÏó**********//
// ÔÚINTERFACE²¿·Ö¼ÓÈëFORMSµ¥Ôª£¬È»ºóÔÚCREATEº¯ÊýÖмÓÈëAPPLICATION½á¹û¿ÉÒÔÁË//
XMLDocument1:=TXMLDocument.Create(Application);
XMLDocument1.FileName:='tmpPrint.xml';
XMLDocument1.Active:=True;
try
Common_Node := XMLDocument1.DocumentElement.ChildNodes[0];
commonchild_Node:= common_Node.ChildNodes.first;
except
on E:Exception do
ShowMessage(E.Message);
end;
//###############################
while (commonchild_Node<> nil) do
begin
getStrLst.Values[commonchild_Node.NodeName]:= commonchild_Node.NodeValue;
commonchild_Node:= commonchild_Node.NextSibling;
end;
//#######################################################
record_Node:= XMLDocument1.DocumentElement.ChildNodes[1];
recordchild_Node:= record_Node.ChildNodes.First;
//¼ÓÒ»ÊÇΪÁ˽«×Ö¶ÎÃû·ÅÔÚµÚÒ»ÐÐ
setlength(GetArray,record_Node.ChildNodes.Count+1,recordchild_Node.ChildNodes.Count);
//#############################################дÈë×Ö¶ÎÃûµ½Êý×éµÚÒ»ÐÐ
field_Node:= recordchild_Node.ChildNodes.First;
for J:=0 to high(getArray[0]) do begin
if field_Node<>nil then
getArray[0,J]:=field_Node.NodeName;
field_Node:=field_Node.NextSibling;
end;
//#################################дÈëÖµµ½ÆäËûÐÐ
for I:=1 to high(getArray) do begin
if recordchild_Node<>nil then begin
field_Node:= recordchild_Node.ChildNodes.First;
for J:=0 to high(getArray[0]) do begin
if field_Node<>nil then begin
if field_Node.NodeValue<>Null then
getArray[I,J]:=field_Node.NodeValue
else
getArray[I,J]:='';
end;
//##################################
if field_Node.NextSibling<> nil then
field_Node:=field_Node.NextSibling;
end;{n,for}
end;{n,if}
//if recordchild_Node.NextSibling<>nil then ¼ÓÈëÅбð»áÓ°ÏìЧÂÊ
//²»¼ÓÒ²¿ÉÄÜûÓÐÎÊÌ⣬ûÓÐ×Ðϸ²âÊÔ¹ý
recordchild_Node:=recordchild_Node.NextSibling;
end;{n,for}
XMLDocument1.Free;
end;不知道为什么有乱码!~~