2012-07-14 6 views
0
나는 현재 델파이 NativeXML을 사용하고

나는 다음과 같은 구조의이 XML 문서가 :Delphi에서 NativeXML을 사용하는 XML 문서에서 비슷한 노드를 반복하는 방법은 무엇입니까?

<?xml version="1.0"?> 
<Request> 
    <RequestId>5429935816</RequestId> 
    <CompletedDate>2012-07-12T12:06:57+00:00</CompletedDate> 
</Request> 
<RequestId> 
    <RequestId>5428581330</RequestId> 
    <CompletedDate>2012-07-12T04:21:46+00:00</CompletedDate> 
</Request> 

는 기본적으로 나는 문서의 각 RequestID가의 값을 알 필요가 있습니다.

미리 감사드립니다.

답변

0

다음은 노드를 통해 루프하는 방법을 보여주는 몇 가지 코드입니다 (테스트하지 않고 내 메모리에서 작성했습니다 ...). 물론 실제 코드로 strBuf 및 파일 이름을 대체해야합니다.)

procedure ReadNodes; 
var 
    strBuf: string; 
    i: Integer; 
begin 
    aXMLDoc := TNativeXML.Create; 
    try 
    aXMLDoc.ExternalEncoding := seUTF8; //for example... 
    aXMLDoc.LoadFromFile(FileName); 

    if assigned(aXMLDoc.Root) then 
    begin 
     for i := 0 to aXMLDoc.Root.NodeCount - 1 do               
     begin 
     strBuf := aXMLDoc.Root.Node[i].NodeByName('RequestID').ValueAsString; 
     end; 
    end; 
    finally 
    aXMLDoc.Free; 
    end; 
end; 
+0

I이 대답 생각되지만 내부 루프 문 읽어야 strBuf = aXMLDoc.Root.Node [I] .NodeByName ('RequestID가')를 ValueAsString]. 감사합니다. 올바른 방향으로 안내해주었습니다. –

0
Node.FindNodes('Request', AList); 
for I := 0 to AList.Count - 1 do begin 
    Node2 := TXmlNode(AList[I]); 
    if Assigned(Node2.NodeByName('RequestId')) then begin 
    Node3 := Node2.NodeByName('RequestId'); 
    s := Node3.ValueUnicode; 
    //...s 
    end; 
end; 
관련 문제