有这样的文档:
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
。
。
。
由相同的n个xml文档组合而成,现在要把它分成一个个的独立的xml:
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
大家帮我给一个想法!!!谢谢!!!!
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
。
。
。
由相同的n个xml文档组合而成,现在要把它分成一个个的独立的xml:
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>5</TYPE>
<CMDType>0019</CMDType>
<TERMINAL_ID></TERMINAL_ID >
<TERMINAL_TYPE></TERMINAL_TYPE >
<UIM_ID></UIM_ID>
<GSN></GSN>
<START_TIME></START_TIME>
<RETURN_TIME><RETURN_TIME>
<REAL_TIME><REAL_TIME>
<LATITUDE></LATITUDE>
<LONGITUDE></LONGITUDE>
<VELOCITY></VELOCITY>
<ALTITUDE></ALTITUDE>
<RADIUS></ RADIUS>
<DIRECTION></DIRECTION>
</RES>
大家帮我给一个想法!!!谢谢!!!!
解决方案 »
- 求助DELPHI问题
- 小弟通过了第一轮面试,明天要第二轮笔试,但是实在不知道DELPHI能笔试什么?
- 咨询:关于注册软件公司
- 请大家帮忙!出点主意!
- 如何将service application服务程序做成一个小图标放在系统托盘栏里
- 关于FastReport的一个问题,快来帮帮忙!给你们高分!!!!!!!!!!!
- 关于delphi中处理word文件的相关问题
- 我有个dll,请问如何在自己的程序里加入这个dll
- 费了老大的劲下载了acdsee4.0,却发现没有注册码不能使用,气杀我也
- 烦请各位编程高手推荐一本Delphi好书
- 部分计算机书籍转让(主要为Delphi和软考类,限深圳地区)
- 从access数据库里面随机抽取20条数据,为什么SELECT top 20 * FROM 表1 ORDER BY Rnd(id) 。每次抽取的都是一样的呢
var
SL, SL2: TStringList;
S: string;
iPos, I: Integer;
const
XMLHead = '<?xml version="1.0" encoding="GBK"?>';
begin
SL := TStringList.Create;
SL2 := TStringList.Create;
I := 0;
try
SL.LoadFromFile('c:\full.xml');
iPos := Pos(XMLHead, SL.Text);
while iPos > 0 do
begin
SL2.Text := Copy(SL.Text, 1, iPos -1);
SL.Text := Copy(SL.Text, iPos + Length(XMLHead), MaxInt);
iPos := Pos(XMLHead, SL.Text);
if Trim(SL2.Text) <> '' then
begin
SL2.Text := XMLHead + SL2.Text;
SL2.SaveToFile('c:\' + Format('%d.xml', [i]) );
Inc(I);
end;
end;
if Trim(SL.Text) <> '' then
begin
SL.Text := XMLHead + SL.Text;
SL.SaveToFile('c:\' + Format('%d.xml', [i]) );
end;
finally
SL2.Free;
SL.Free;
end;
end;
本人在客户端有一个Tclientsocket控件,专门接收Tserversocket发出的信息,采用的是发出Xml格式的文档,形如:
<?xml version="1.0" encoding="GBK"?>
<RES>
<TYPE>2</TYPE>
...
</RES>
当接收后,clientsocket解析,在理想情况下:
用下方法解:
DWStr:=Socket.ReceiveText;
XMLRead.Active := False;
XMLRead.XML.Text := DWstr;
XMLRead.Active := True;
Root:= XMLRead.DocumentElement;
if Root.ChildNodes['TYPE'].Text='2' then
。
在理想情况下,来一条就解析一条,基本没有问题!但是现在发生一个问题:
来的数据往往不是完整的一条或有很多条:
<?xml version="1.0" encoding="GBK"?>
<RES><TYPE>2</TYPE><TERMINAL_ID>A57018</TERMINAL_ID><TERMINAL_TYPE>TDW</TERMINAL_TYPE><UIM_ID>A57018</UIM_ID><GSN></GSN><START_TIME></START_TIME><RETURN_TIME>2006-06-29 10:41:45</RETURN_TIME><LATITUDE>30.556153</LATITUDE><LONGITUDE>114.277576</LONGITUDE><VELOCITY>33.336</VELOCITY><ALTITUDE>50</ALTITUDE><RADIUS>0</RADIUS><DIRECTION>29</DIRECTION></RES>
<?xml version="1.0" encoding="GBK"?>
<RES><TYPE>2</TYPE><TERMINAL_ID>FB0287</TERMINAL_ID><TERMINAL_TYPE>TDW</TERMINAL_TYPE><UIM_ID>FB0287</UIM_ID><GSN></GSN><START_TIME></START_TIME><RETURN_TIME>2006-06-29 10:41:45</RETURN_TIME><LATITUDE>32.258915</LATITUDE><LONGITUDE>111.455278</LONGITUDE><VELOCITY>24.076</VELOCITY><ALTITUDE>50</ALTITUDE><RADIUS>0</RADIUS><DIRECTION>29</DIRECTION></RES>或:
<?xml version="1.0" encoding="GBK"?>
<RES><TYPE>2</TYPE><TERMINAL_ID>A57018</TERMINAL_ID><TERMINAL_TYPE>TDW</TERMINAL_TYPE><UIM_ID>A57018</UIM_ID><GSN></GSN><START_TIME></START_TIME><RETURN_TIME>2006-06-29 10:41:45</RETURN_TIME><LATITUDE>30.556153</LATITUDE><LONGITUDE>114.277576</LONGITUDE><VELOCITY>33.336
等一下才会有下半段:
</VELOCITY><ALTITUDE>50</ALTITUDE><RADIUS>0</RADIUS><DIRECTION>29</DIRECTION></RES>
等等情况。所以造成解析错误抱错!
有什么好的办法吗?!要求数据量大,而且相应时间要快!因为每秒钟都有大量数据发回来!!!
大家都想想呀!!!!