我的 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:
解决办法是找到子元素的第一个子元素,并解析this的下一个元素,这里是:
这段代码在方法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));
解决办法是找到子元素的第一个子元素,并解析this的下一个元素,这里是:
这段代码在方法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/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |