2014-02-08 3 views
0

Я пытаюсь создать XPathQuery, чтобы захватить все внутри класса 'ocrx_word' Я пробовал некоторые варианты и не нашел каких-либо работ, я получаю ошибку Unable to Parse.XPath Query for all 'ocrx_word'

Вот как выглядит мой HTML.

<span class='ocr_line' id='line_3' title="bbox 165 201 443 219"> 
    <span class='ocrx_word' id='word_5' title="bbox 165 201 252 217">Associate</span> 
    <span class='ocrx_word' id='word_6' title="bbox 259 202 335 218">Director</span> 
    <span class='ocrx_word' id='word_7' title="bbox 341 203 358 218">of</span> 
    <span class='ocrx_word' id='word_8' title="bbox 361 203 443 219">Athletics</span> 
</span> 

Я хочу захватить атрибут title и строку.

Full HTML

NSString *htmlString = [tesseract getHOCRText]; 

NSData *tutorialsHtmlData = [htmlString dataUsingEncoding:NSASCIIStringEncoding]; 

// 2 
TFHpple *tutorialsParser = [TFHpple hppleWithHTMLData:tutorialsHtmlData]; 
NSString *tutorialsXpathQueryString = @"//*[@class='ocrx_word']/text()"; 
NSArray *tutorialsNodes = [tutorialsParser searchWithXPathQuery:tutorialsXpathQueryString]; 
+1

Вы должны проверить строку, которая фактически подается в синтаксический анализатор, и его кодировка (общая причина проблем с анализом - попробуйте UTF8). Выражение XPath, похоже, не является проблемой. – helderdarocha

+0

Я поместил одну строку HTML в строку, и я не получил ошибку синтаксического анализа. Итак, как я буду использовать UTF8? –

+1

Хорошо, я получил его, изменил dataUsingEncoding: NSASCIIStringEncoding для dataUsingEncoding: NSUTF8StringEncoding –

ответ

1

Этот XPath извлекает название:

//*[@class='ocrx_word']/@title 

И это извлекает текст:

//*[@class='ocrx_word']/text() 

это то, что вам нужно?

+0

Я все еще не могу разобрать, мой HTMl сложнее, чем то, что я разместил, так что вот полный HTML, надеюсь, это поможет. http://codeshare.io/bjAO4 Спасибо. –

+1

Кажется, ошибка «Невозможно разобрать» вызвана чем-то другим. Как вы читаете этот XML? NSXMLParser? Попробуйте поместить этот XML (или более короткую версию) в NSString и посмотреть, работает ли он. Это выражение XPath очень простое, и оно должно работать в XPath 1.0 или 2.0 – helderdarocha

+1

Это не ужасно сложнее ... И этот ответ должен просто работать на него (он здесь). Разделение того, что вы тестируете/используете, может помочь. – Wrikken