2012-10-06 3 views
0

을 존재하는 경우이 내 xml 파일을 할 수 있습니다 :어떻게 하위 노드가

<?xml version="1.0" encoding="utf-8"?> 
<UsersF Ver="1.1"> 
    <row User="1" Pin="2y44ic" ExtPag="full"/> 
    <row User="2" pin="tfde88" ExtPag="e45" /> 
    <row User="3" Pin="9gr444466gg" Level="nov" GamePag="3" /> 
</UsersF> 

그리고이 ... 나는 nextgrid를 사용 내가 접근 할 수와 문자열 그리드를 넣어 코드입니다 ...

procedure showXmlToString; 
Count:= 0; 
Conf.nxtgrd.AddRow(71); 
Conf.nxtgrd.BeginUpdate; 
with FXml.Root do 
for i := 0 to NodeCount - 1 do 
    begin 
    if Nodes[i].Name <> 'Ver' then 
     begin 
     Conf.nxtgrd.Cell[0,count].AsString := Nodes[i].Nodes[1].Value; 
     Conf.nxtgrd.Cell[1,count].AsString := Nodes[i].Nodes[2].Value; 
     Conf.nxtgrd.Cell[2,count].AsString := Nodes[i].Nodes[3].Value;    
     Conf.nxtgrd.Cell[3,count].AsString := Nodes[i].Nodes[4].Value; 
     count := count + 1; 
     end; 
    end; 

노드가 종료되지 않은 상태가되면 오류가 발생합니다.

답변

0

속성에 액세스하려면 TXmlNode.AttributeCount을 사용하여 사용 가능한 속성의 수를 반복 할 수 있습니다. 이 코드의 주요 포인트가 속성을 얻는 것이라면 TXmlNode.Containers을 사용하여 액세스 할 수 있습니다. 화면에 문자열을 표시이 예제에서는 Log 절차를

with FXML.Root do 
for i := 0 to ContainerCount - 1 do 
begin 
    Log(Format('ContainersName=%s AtribNumber=%d',[Containers[i].Name,i])); 
    for j:=0 to Containers[i].AttributeCount-1 do begin 
    Log(Format('AttribName=%s AttribVal=%s',[Containers[i].Attributes[j].Name,Containers[i].Attributes[j].Value])); 
    end; 
end; 

:

하자 당신이 모든 속성이 & 값의 이름을 얻을하고 싶은 말은, 당신은 다음 반복을 사용 할 수 있습니다. 결과는 다음과 같습니다.

ContainersName=row AtribNumber=0 
AttribName=User AttribVal=1 
AttribName=Pin AttribVal=2y44ic 
AttribName=ExtPag AttribVal=full 
ContainersName=row AtribNumber=1 
AttribName=User AttribVal=2 
AttribName=pin AttribVal=tfde88 
AttribName=ExtPag AttribVal=e45 
ContainersName=row AtribNumber=2 
AttribName=User AttribVal=3 
AttribName=Pin AttribVal=9gr444466gg 
AttribName=Level AttribVal=nov 
AttribName=GamePag AttribVal=3 

이 정보가 도움이 되었기를 바랍니다.

+0

아니요 작동하지 않습니다 ... bcs 행 노드에 같은 노드가 없습니다 ... – azrael11

+0

oooh .. 속성 (사용자, 핀, 레벨 ..)을 확인한다는 뜻입니까? TXmlNode.AttributeCount를 사용하여 'TXmlNode.AttributeValue'를 사용하여 속성 값을 반복하고 검색합니다. – sybond

+0

예. 속성을 의미합니다 ... txmlnode.attributecount가 잘못되었습니다. bcs 때로는 동일한 번호를 제공하지만 누락 된 노드를 알려주지 않습니다 ... – azrael11

관련 문제