gpt4 book ai didi

ios - 使用 TBXML 解析子元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:18:22 25 4
gpt4 key购买 nike

我的 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>

我想解析 child 的所有 childId 元素。

实际上,我的解析结果只是每个 childs 元素的第一个 childId:

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

在这种情况下,我只得到 11。这里有什么问题吗?

编辑 1:

解决方案是找到子元素的第一个子元素,然后解析这个的下一个元素,这里是:

这段代码在方法traverseElement的do while循环中

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));

最佳答案

解决方案是找到子元素的第一个子元素,然后解析这个的下一个元素,这里是:

这段代码在方法 traverseElement 的 do while 循环中

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));

关于ios - 使用 TBXML 解析子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7404641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com