61 size_t length = strlen(text);
63 for (
unsigned int i = 0; i < length; ++i)
64 if (text[i] ==
'<' || text[i] ==
'&')
72 int options = HTML_PARSE_RECOVER | HTML_PARSE_NOERROR | HTML_PARSE_NOWARNING;
73 xmlDocPtr doc = htmlReadDoc((
const xmlChar *)text,
"",
"UTF-8", options);
77 doc = htmlReadDoc((
const xmlChar *)text,
"",
"UTF-8", options);
86 xmlXPathContextPtr xpathContext = xmlXPathNewContext(doc);
89 VuoDefer(^{ xmlXPathFreeContext(xpathContext); });
91 xmlXPathObjectPtr xpathObject = xmlXPathEvalExpression((
const unsigned char *)
"//style|//script", xpathContext);
94 VuoDefer(^{ xmlXPathFreeObject(xpathObject); });
96 if (!xmlXPathNodeSetIsEmpty(xpathObject->nodesetval))
98 for (
int i = 0; i < xpathObject->nodesetval->nodeNr; ++i)
100 xmlUnlinkNode(xpathObject->nodesetval->nodeTab[i]);
101 xmlFree(xpathObject->nodesetval->nodeTab[i]);
102 xpathObject->nodesetval->nodeTab[i] = NULL;
108 xmlNodePtr root = xmlDocGetRootElement(doc);
109 xmlChar *content = xmlNodeGetContent(root);