У меня есть XML, который выглядит следующим образом:Анализировать XML в Xcode с Hpple
<menu>
<day name="monday">
<meal name="BREAKFAST">
<counter name="Bread">
<dish>
<name>Plain Bagel
<info name="Plain Bagel">
<serving>1 Serving (90g)</serving>
<calories>200</calories>
<caloriesFromFat>50</caloriesFromFat>
</info>
</name>
</dish>
<dish>
<name>Applesauce Coffee Cake
<info name="Applesauce Coffee Cake">
<serving>1 Slice-Cut 12 (121g)</serving>
<calories>374</calories>
<caloriesFromFat>104</caloriesFromFat>
</info>
</name>
</dish>
</counter>
</meal>
</day>
</menu>
А теперь я пытаюсь получить количество тегов, которые находятся под info
тег, который должен быть три для первого info
тег, который имеет атрибут Plain Bagel
.
Как я уже сказал, я использую парсер Hpple для iOS. Вот что я имею и пытаюсь, но не могу заставить его работать.
- (void)getData:(NSData*)factData {
TFHpple *Parser = [TFHpple hppleWithHTMLData:factData];
NSString *XpathQueryString = @"//day[@name='monday']/meal[@name='BREAKFAST']/counter[@name='Bread']/dish/name/info[@name='Plain Bagel']";
NSArray *Nodes = [Parser searchWithXPathQuery:XpathQueryString];
NSInteger count = Nodes.count;
NSLog(@"count: %ld", count);
for (TFHppleElement *element in Nodes) {
NSLog(@"count inside: %ld", element.children.count);
}
}
И первый подсчет дает 1. Что правильно, но счет внутри дает 7, в котором я запутался. И не знаю, почему это происходит. После того, как я заберусь в тег info
, я хочу прокрутить для каждого тега, сервировки, калорий и калорий из жира и получить каждый текст тегов. Но я не уверен, почему он дает 7?
Спасибо за помощь заранее.
Используйте RaptureXML. Его супер простой и лучший XML-парсер там. –