0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
@try
{
if ([[NSThread currentThread] isCancelled]) // Поток мог быть остановлен, пока мы где-то стояли на lock'е
return nil;
// парсим html-строку в DOM
viewData.body = [[viewData.body componentsSeparatedByString: @"<tab"] componentsJoinedByString: @"<b"];
viewData.body = [[viewData.body componentsSeparatedByString: @"</tab"] componentsJoinedByString: @"</b"];
htmlDocPtr hdoc = htmlParseDoc((xmlChar*)[[NSString stringWithFormat:@"<div>%@</div>",viewData.body] UTF8String], "utf-8");
xdoc = [[NSXmlDoc alloc] initWithNode:hdoc];
if ([[NSThread currentThread] isCancelled])
return nil;
// Собираем форматированную строку
blockRanges = [[NSMutableArray alloc] init];
xmlNodePtr node = [xdoc selectNode:@"/html/body/div"].libxmlNode; // Работа напрямую с нодами во враппере не реализованна :(
parsedString = [[NSMutableAttributedString alloc] init];
[self parseTag:node string:parsedString blockRanges:blockRanges];
[xdoc release];
xdoc = nil;
viewData.body = [[viewData.body componentsSeparatedByString: @"<b"] componentsJoinedByString: @"<tab"];
viewData.body = [[viewData.body componentsSeparatedByString: @"</b"] componentsJoinedByString: @"</tab"];
if ([[NSThread currentThread] isCancelled])
return nil;
Вот такой костыль по обходу бага в html-парсере libXml.
Запостил:
krypt ,
15.05.2012 (Updated 25.03.2018 )
Комментарии (0) RSS