回 帖 发 新 帖 刷新版面

主题:delphi的RecordNodeList读取XML出错

问题:delphi的RecordNodeList读取XML出错(读取XML子节点时,把多个子节点赋值给RecordNodeList出错),
RecordNodeList有大小限制吗?XML文件的其中子节点少就可以读取,多了读取就报错,是别的原因吗?  

代码:
function TTables.getTableFields(TableName:string):TVirtualTable;
var
 RootNodeList,RecordNodeList:IXMLNodeList;
 TableNode:IXMLNode;
 MyTf:TFields;
 i,m:Integer;
 SrcTN,DestTN,WellFN:string;
begin
 Result:=nil;
  RootNodeList:=MyXmlDoc.DocumentElement.ChildNodes;
  if RootNodeList.Count>0 then
  begin
   TableNode:=RootNodeList.FindNode(TableName);
   if TableNode.HasChildNodes then
   begin
     try
      Result:=TVirtualTable.Create(nil);
         Result.Active:=True;
     except
       FreeAndNil(result);
       raise TmyException.Create('虚拟表建立错误',self);
       exit;
     end;
     BuildFields(Result);

      DestTN:=TableNode.Attributes['DEST'];
     SrcTN:=TableName;
     WellFN:=TableNode.Attributes['WELLFIELD'];
     if TableNode.HasChildNodes then
     begin
       RecordNodeList:=TableNode.ChildNodes;   //在这个地方报错了(判断JJBSJ下面有字节点后,把子节点赋值给RecordNodeList时报错)
        m:=RecordNodeList.Count;
       for i:=0 to m-1 do
       begin
        TableNode:=RecordNodeList[i];
        Result.Append;
        Result.FieldByName('SrcTableName').AsString:=SrcTN;
        Result.FieldByName('DestTableName').AsString:=DestTN;
        Result.FieldByName('WellNameFieldName').AsString:=WellFN;
        Result.FieldByName('SrcFieldName').AsString:=TableNode.Attributes['SRC'];
        Result.FieldByName('DestFieldName').AsString:=TableNode.Attributes['DEST'];
        Result.FieldByName('FiledType').AsString:=TableNode.Attributes['TYPE'];
        Result.FieldByName('FieldLen').AsInteger:=strtoint(TableNode.Attributes['LEN']);
        Result.FieldByName('IsKey').AsBoolean:=strtobool(TableNode.Attributes['ISKEY']);
       end;


     end;

   end;
  end ;
end;


回复列表 (共2个回复)

沙发

深圳华信群英科技有限公司,目前主要从事软件外包开发、高级软件人才定向输送等业务,面对日益严峻的大学生就业难和IT企业招聘难,自2006以来,与知名通信软件公司正式签订定向输送人才的合作协议,针对想进入软件行业的人员提供企业实训,实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段,共计900学时。
企业订单委培,内训前签订就业安置协议,100%保证就业。实训结束之后,在华信群英科技及其战略合作伙伴从事通信软件研发工作。欢迎有意向者加QQ:649846168咨询。

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册