Я использую TFHpple (который использует XPath) для разбора HTML-документа. Я могу получить содержимое различных узлов и т. Д. Но код, который я нашел на GitHub, кажется неполным. У него есть метод для получения атрибутов узла, но дочернего массива. Поэтому я написал один и не удалось. Два метода «атрибутов» ниже работают нормально. По сути, я хотел бы получить дочерний массив в качестве нового узла. Я думаю, что у меня не получается на уровне NSDictionary. Я пытался создать новый элемент TFHpple из того, что я возвращаю в "children" ниже, но ... FAIL! Любые подсказки?
Это из TFHppleElement.m:
- (NSDictionary *) attributesForNode: (NSDictionary *) myNode
{
NSMutableDictionary *translatedAttributes = [NSMutableDictionary dictionary];
for (NSDictionary *attributeDict in [myNode objectForKey: TFHppleNodeAttributeArrayKey])
{
//NSLog(@"attributeDict: %@", attributeDict);
[translatedAttributes setObject: [attributeDict objectForKey: TFHppleNodeContentKey]
forKey: [attributeDict objectForKey: TFHppleNodeAttributeNameKey]];
}
return translatedAttributes;
}
- (NSDictionary *) attributes
{
return [self attributesForNode: node];
}
- (BOOL) hasChildren
{
return [node objectForKey: TFHppleNodeChildArrayKey] != nil;
}
- (NSDictionary *) children
{
NSMutableDictionary *translatedChildren = [NSMutableDictionary dictionary];
for (NSDictionary *childDict in [node objectForKey: TFHppleNodeChildArrayKey])
{
[translatedChildren setObject: childDict
forKey: [childDict objectForKey: TFHppleNodeNameKey]];
}
return [node objectForKey: TFHppleNodeChildArrayKey];
}