2013-05-18 4 views
0

Я разбираю некоторые HTML и мне нужно получить все innerHTML <body />. Я делаю это так:TFHpple - получение элемента HTML без тегов элемента?

TFHpple *doc = [[TFHpple alloc] initWithHTMLData:[NSData dataWithContentsOfFile:sectionFilePath]]; 
TFHppleElement *body = [doc searchWithXPathQuery:@"//body"][0]; 

NSString *bodyHTML = body.raw; 

Однако это возвращает:

<body>stuff inside body</body> 

вместо того, чтобы просто:

stuff inside body 

Вопрос: Есть ли способ, чтобы получить чисто внутренний HTML элемента, исключая его собственные теги?

Я придумал этот метод, но мне кажется, что я изобретаю колесо здесь. Этот метод также довольно медленный.

TFHppleElement *child; 
for(int i = 0; i<body.children.count; i++){ 
    child = (TFHppleElement*)body.children[i]; 

    if(child.raw != nil) [bodyHTML appendString:child.raw]; 
    else if(child.content != nil) [bodyHTML appendString:child.content]; 
} 

ответ

0

Попробуйте это ...

NSURL *url = [NSURL URLWithString: URL_HERE]; 
NSData *htmlData = [NSData dataWithContentsOfURL:url]; 

TFHpple *parser = [TFHpple hppleWithHTMLData:htmlData]; 

NSString *xpathQueryString = @"//body"; 
NSArray *nodes = [parser searchWithXPathQuery:xpathQueryString]; 

for (TFHppleElement *element in nodes) { 

    lable.text = [[element firstChild] content]; 
} 
+0

Это похоже только на текст первого элемента в теле, который не является тем, что мне нужно ... похоже, вы также скопировали это из другой статьи? – mattsven

+0

добавьте теги других элементов, подобных этому, @ "// body/h1/ul/li" и btw это было из приложения, которое я написал – iDevMartin

0

У меня была такая же проблема, чтобы решить и то, что я наконец-то сделал, чтобы получить element.raw с форматом HTML, как вы получите его и просто удалить метки с одним из способов, описанных здесь:

Remove HTML Tags from an NSString on the iPhone

Я использовал функцию stipHtml.

+0

Право, мое решение состояло в том, чтобы переключиться на другой XML-парсер RaptureXML. – mattsven

Смежные вопросы