2015-07-01 5 views
3

Я пытаюсь разобрать некоторые значения с веб-сайта. Для этого я использую QXmlStreamReader. После того, как я начал синтаксический анализ, я получил XML Error: «Ожидаемый» = ', но получил'> '. ". Он разбивает на этой искаженной элемент:Есть ли способ заставить QXmlStreamReader справиться с искаженным XML?

<tbody pageStartAt > 

Я полагаю, что причина этого в том, что стандарт означает, что все после основного имени тега должен иметь несколько значений, присоединенные к ней, как это:

<tbody pageStartAt="2" > - this is working. 

Мои вопрос - есть ли способ предотвратить это? Я просто хочу игнорировать subtags, у которых нет значений. Я бы предпочел избежать использования QWebKit - я думаю, что это слишком много.

+1

То, что вы анализируете, не является XML, поэтому вы не можете ожидать, что 'QXmlStreamReader' справится с этим. Однако было бы просто исправить читателя, чтобы принять такой неверный XML. Это будет меньше работы, чем любое другое решение, скорее всего, мы говорим о 2-3-строчном патче :) –

+0

В большинстве случаев QXmlStreamReader будет продолжать прерываться после ошибки. Что именно вы подразумеваете под словом «это ломается»? – MrEricSir

+0

Он устанавливает QXmlStreamReader в состояние ошибки, которое невозможно удалить. (существует четкий метод - но он также сбрасывает смещение обработанных символов). – lagoru

ответ

0

Самый простой способ, который я нашел, это использование HTMLTidy (спасибо за совет @MrEricSir). Он исправляет неисправный XML. Одно понижение - факт, что он добавляет ненужные теги, такие как/body/и т. Д.