Я использую libxml2.2.7.3 для синтаксического анализа html-страниц, и мне трудно заставить его корректно работать с CDATA в HTML. Вот код:
xmlDocPtr doc = htmlReadMemory(data, length, "", NULL, 0);
xmlBufferPtr buffer = xmlBufferCreate();
xmlNodeDump(buffer, doc, doc->children, 0, 0);
printf("%s", (char*)buffer->content);
и данные HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><body>
<div>
<script type="text/javascript">
//<![CDATA[
document.write('</div>');
//]]>
</script>
</div>
</body></html>
Парсер ошибочно распознает
:8: HTML parser error : Unexpected end tag : script </script> ^ :9: HTML parser error : Unexpected end tag : div </div> ^
И результат распечатывается и отлаживается также подразумевают, что синтаксический анализ пошел не так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><body> <div> <script type="text/javascript"><![CDATA[ //<![CDATA[ document.write(']]></script></div>'); //]]> </body></html>
Итак, вопрос в том, является ли это ошибкой libxml2? Или я что-то не так делаю?
Будем очень признательны за любые полезные советы.
Спасибо!