2012-07-14 231 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> 

基本上我需要知道文档中的每个请求ID的价值。

预先感谢您的问候。

回答

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

我想这就是答案,但循环中的语句应该是: STRBUF:= aXMLDoc.Root.Node [I] .NodeByName( '请求ID')ValueAsString。 谢谢你的想法,它指出我正确的方向。 – 2012-07-18 14:25:54

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;