必要に迫られて,書き起こしてみた
悔いは無い(爆
また,どっかでこの手の追っかけ部,実装作業があったときの
自分自身のサンプル用に
次はC#辺りで,やりそう
なお,どことなく,ORCA~Claimの香りがするのは気のせいではない(笑
DELPHI:
- //**********************************************
- //指定ノードの検索(再帰利用)
- //
- //nd : 検索開始点のノード (IXMLDOMNode)
- //ndName : 検索対象のノード名称
- //
- //return : 見つけたノードオブジェクト(見つからなかったらnull)
- //**********************************************
- function TClaimInput.SearchNode(nd: IXMLDOMNode; ndName: string): IXMLDOMNode;
- var
- i : integer;
- st : string;
- begin
- result := nil;
- for i := 0 to nd.childNodes.Get_length - 1 do
- begin
- st := nd.childNodes.item[i].Get_nodeName();
- if st = ndName then
- begin
- result := nd.childNodes.item[i];
- end
- else
- begin
- result := SearchNode(nd.childNodes.item[i], ndName);
- end;
- if result <> nil then
- begin
- break;
- end;
- end;
- end;
- //**********************************************
- //指定ノードの検索(再帰利用)(Overload)
- //
- //nd : 検索開始点のノード (IXMLDOMNode)
- //ndName : 検索対象のノード名称
- //attrName : 検索対象のノード属性名称
- //attrVal : 検索対象のノード属性値
- //
- //return : 見つけたノードオブジェクト(見つからなかったらnull)
- //**********************************************
- function TClaimInput.SearchNode(nd: IXMLDOMNode; ndName: string; attrName : string; attrVal : string): IXMLDOMNode;
- var
- i : integer;
- j : integer;
- stn : string;
- stv : string;
- fl : boolean;
- begin
- result := nil;
- for i := 0 to nd.childNodes.Get_length - 1 do
- begin
- fl := false;
- stn := nd.childNodes.item[i].Get_nodeName();
- if stn = ndName then
- begin
- for j := 0 to nd.childNodes.item[i].attributes.Get_length - 1 do
- begin
- stn := nd.childNodes.item[i].attributes.item[j].Get_nodeName();
- stv := nd.childNodes.item[i].attributes.item[j].Get_text();
- if (stn = attrName) and (stv = attrVal) then
- begin
- fl := true;
- break;
- end;
- end;
- end;
- if fl = true then
- begin
- result := nd.childNodes.item[i];
- end
- else
- begin
- result := SearchNode(nd.childNodes.item[i], ndName, attrName, attrVal);
- end;
- if result <> nil then
- begin
- break;
- end;
- end;
- end;
- //**********************************************
- //指定ノードの1層上のノードを返す
- //
- //nd : 検索開始点のノード (IXMLDOMNode)
- //
- //return : 一個上位のノードオブジェクト
- //**********************************************
- function TClaimInput.SearchNodeParent(nd: IXMLDOMNode): IXMLDOMNode;
- begin
- result := nd.Get_parentNode;
- end;



