線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1291
推到 Plurk!
推到 Facebook!

XML如何在XML的Tree中搜尋及加入Nodes

答題得分者是:ccchen
27577
一般會員


發表:4
回覆:1
積分:1
註冊:2004-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-13 10:15:26 IP:211.20.xxx.xxx 未訂閱
請教諸位高手 我該如何在較複雜的XML Tree中找到我要的Node,於,並於該下層加入子節點等資料 (不一定在哪一層及跳層的情況)? 謝謝!
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-13 13:42:49 IP:218.163.xxx.xxx 未訂閱
引言: 請教諸位高手 我該如何在較複雜的XML Tree中找到我要的Node,於,並於該下層加入子節點等資料 (不一定在哪一層及跳層的情況)? 謝謝!
可以循XML Tree以遞回方式找, 以下是依attribute之值來找到Node,給你做為參考
function FindbyAttValue(snd:IXMLNode;ndname,attName:string;attvalue:string):IXMLNode;
Var I:integer;
    s:string;
begin
  Result:=nil;
  For I:=0 to snd.ChildNodes.Count -1 do
    If comparetext(ndname,snd.ChildNodes[I].NodeName)=0 then begin
      s:=snd.ChildNodes[I].Attributes[attname];
      If Comparetext(attvalue,s)=0 then begin
        Result:=snd.ChildNodes[I];
        break;
      end;
    end;
  If Result=nil then
    If snd.ChildNodes.Count > 0 then
      For I:=0 to snd.ChildNodes.Count -1 do begin
        Result:=FindbyAttValue(snd.ChildNodes[I], ndname,attname,attvalue);
        If Result <> nil then break;
      end;
end;    
snd為開始找之結點,若要由Root起找, 可用XMLDocument.DocumentElement 例如以下找, chapterno="0"之Chapter Element
var node:IXMLNode;
begin
  node:=FindNodeByValue(XMLDocument.DocumentElement, 'Chapter','chapterno','0');
  node.addchild('Section');//加入TagName為"Section"之child node
end;
這些應該都可以在Help中找到
系統時間:2024-07-03 14:20:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!