質問

私のXMLは次のように見えます:

<root>
<sets>
    <childSets>
        <childs>
            <child>
                <childId>11</childId>
        </child>
        <child>
            <childId>22</childId>
        </child>
        <child>
            <childId>33</childId>
        </child>
        <child>
            <childId>44</childId>
        </child>
[...]
    </childs>
</childSets>

    <childSets>
[...]
    </childSets>
</sets>
</root>

すべてを処理したいです childId の要素 child.

実際、私の解析の結果は最初のものです childId すべての childs エレメント:

[...]
do {
  if ([[TBXML elementName:element] isEqualToString:@"childSet"]) {
  [...]
        TBXMLElement *xmlChildId        = [TBXML childElementNamed:@"childId"           parentElement:child];
  [...]
  }
} while ((element = element->nextSibling));  
[...]

この場合、私はちょうどわかります 11. 。ここで何が問題なのですか?

編集1:

解決策は、子要素の最初の子を見つけ、これの次の要素を解析することです。

このコードは、メソッドトラバースライムのループ中にdoにあります

do { [...]
        if ([[TBXML elementName:element] isEqualToString:@"childSet"]) {
        //find the first child
            if ((ChildPARENTELEMENT->firstChild)) {

            while (ChildOfCHILDELEMENT!=nil) {
                NSLog(@"....");

                 ChildOfCHILDELEMENT = [TBXML nextSiblingNamed:@"childs" searchFromElement:ChildOfCHILDELEMENT];

            }
        }
    }
while((element = element->nextSibling));

正しい解決策はありません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top