标签:begin HtmlParser end Childrens aStringlist Delphi7 aNode 方法 Children
uses HtmlParser procedure TForm4.Button1Click(Sender: TObject); var FNodes:IHtmlElement; aString:string; begin FNodes := parserHtml(Memo1.Text); aString:= FNodes.Children[2].Children[1].Children[5].Children[0].InnerText; end;
//判断某子结点是否存在,增加代码的可靠性 //if NodeIsExist(FNodes, //'Children[2].Children[3].Children[11].Children[3].Children[1].Children[1].Children[1].Children[0]' //) then //Memo3.Lines.Add( //FNodes.Children[2].Children[3].Children[11].Children[3].Children[1].Children[1].Children[1].Children[0].InnerText // ); function NodeIsExist(Root:IHtmlElement;Childrens:string):Boolean ; var aStringlist:tStringlist; i,aIndex:integer; aNode:IHtmlElement; aStr:string; begin Result:= False; aStringlist:=TStringList.Create; aStringlist.Delimiter := '.'; aStringlist.DelimitedText := Childrens; aNode:=Root; for i := 0 to aStringlist.Count-1 do begin aStr:=Copy(aStringlist[i],10,Length(aStringlist[i])-10); aIndex:= StrToIntDef(aStr,0); if aIndex>= aNode.ChildrenCount then begin aStringlist.Free; Exit; end; aNode:=aNode.Children[aIndex]; end; aStringlist.Free; Result:= true; end;
//NodeIsExist的优化版,更高速,只处理最大结点0~99 function NodeIsExist(Root:IHtmlElement;Childrens:string):Boolean ; VAR i:integer; aNode:IHtmlElement; begin Result:= False; aNode:=Root; for i:=1 to Length(Childrens) do begin //aString[1]从1开始,而不是从零开始 if Childrens[i]=#93 then begin // ']' if Childrens[i-2]=#91 then begin // '[' if StrToIntDef(Copy(Childrens,i-1,1),0)>= aNode.ChildrenCount then Exit; //一位数 aNode:=aNode.Children[StrToIntDef(Copy(Childrens,i-1,1),0)]; end; if Childrens[i-3]=#91 then begin // '[' if StrToIntDef(Copy(Childrens,i-2,2),0)>= aNode.ChildrenCount then Exit; //二位数 aNode:=aNode.Children[StrToIntDef(Copy(Childrens,i-2,2),0)]; end; end; end; Result:= true; end;
发表于 2016-12-08 21:06 涂磊 阅读(1532) 评论(0) 编辑 收藏
标签:begin,HtmlParser,end,Childrens,aStringlist,Delphi7,aNode,方法,Children 来源: https://blog.51cto.com/u_15216366/2823469
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。