libxml2 не может правильно обрабатывать CDATA в HTML

Я использую 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>

Парсер ошибочно распознает

внутри кавычек как реальный тег 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? Или я что-то не так делаю?
Будем очень признательны за любые полезные советы. Спасибо!

5
задан K J 26 December 2010 в 17:35
поделиться