В соответствии с запросом Винко Врсаловича, вот код, который дает такой результат:
void dumpNode (TidyNode tnod, int indent)
{
TidyNode child;
for (child = tidyGetChild (tnod); child; child = tidyGetNext (child))
{
имя ctmbstr;
switch (tidyNodeGetType (child))
{
case TidyNode_Root: name = "Root"; перерыв;
case TidyNode_DocType: name = "DOCTYPE"; перерыв;
case TidyNode_Comment: name = "Комментарий"; перерыв;
case TidyNode_ProcIns: name = "Инструкция обработки"; перерыв;
case TidyNode_Text: name = "Текст"; перерыв;
case TidyNode_CDATA: name = "CDATA"; перерыв;
case TidyNode_Section: name = "Раздел XML"; перерыв;
case TidyNode_Asp: name = "ASP"; перерыв;
case TidyNode_Jste: name = "JSTE"; перерыв;
case TidyNode_Php: name = "PHP"; перерыв;
case TidyNode_XmlDecl: name = "Декларация XML"; перерыв;
case TidyNode_Start:
case TidyNode_End:
case TidyNode_StartEnd:
по умолчанию:
name = tidyNodeGetName (child);
TidyAttr att = tidyAttrFirst (child);
while (att)
{
std :: cout <<"Имя attr:" << tidyAttrName (att) << std :: endl; <br>
std :: cout <<"Значение attr:" << tidyAttrValue (att) << std :: endl; <br>
att = tidyAttrNext (att);
}
перерыв;
}
assert (имя! = NULL);
printf ("% d *. *% d% sNode:% s \ n", отступ, отступ, "", имя);
dumpNode (дочерний, отступ + 4);
}
}
void dumpHtml (TidyDoc tdoc)
{
dumpNode (tidyGetHtml (tdoc), 0);
}
int main (int argc, char ** argv) {
std :: string toReturn ("");
Вывод TidyBuffer;
TidyBuffer errbuf;
int rc = -1;
Bool ok;
tidyBufInit (& output);
tidyBufInit (& errbuf);
TidyDoc tdoc = tidyCreate ();
ok = tidyOptSetBool (tdoc, TidyXhtmlOut, да); // Преобразовать в XHTML
если (хорошо)
rc = tidySetErrorBuffer (tdoc, & errbuf); // Захват диагностики
if (rc> = 0)
rc = tidyParseFile (tdoc, "fuebuena.html"); // Разбор ввода
if (rc> = 0)
rc = tidyCleanAndRepair (tdoc); // Убери это!
if (rc> = 0)
dumpHtml (Tdoc);
возврат 0;
}