0

I am getting serialized HTML in response from a REST API (content type in response header is "text/html"). How should I parse/de-serialize and store it as valid HTML page.

Here is the sample:

"html lang=\"en-US\">\r\n\t<head>\r\n\t\t<title>page1</title>\r\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n\t\t<meta name=\"created\" content=\"2020-04-23T01:26:00.0000000\" />\r\n\t</head>\r\n\t<body data-absolute-enabled=\"true\" style=\"font-family:Calibri;font-size:11pt\">\r\n\t\t<div style=\"position:absolute;left:48px;top:115px;width:614px\">\r\n\t\t\t<p style=\"margin-top:0pt;margin-bottom:0pt\">This is test page</p>\r\n\t\t</div>\r\n\t\t<div style=\"position:absolute;left:327px;top:102px;width:624px\">\r\n\t\t\t<table style=\"border:1px solid;border-collapse:collapse\">\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td style=\"border:1px solid\"><br />\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</table>\r\n\t\t\t<br />\r\n\t\t</div>\r\n\t\t<!-- InkNode is not supported -->\r\n\t\t<div style=\"position:absolute;left:399px;top:39px;width:624px\">\r\n\t\t\t<img alt=\"Water Buffalo\" width=\"256\" height=\"256\" src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-8ea29e7dc05f4dedb229ed86f5b10b84!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-src-type=\"image/png\" data-fullres-src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-8ea29e7dc05f4dedb229ed86f5b10b84!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-fullres-src-type=\"image/png\" />\r\n\t\t\t<br />\r\n\t\t</div>\r\n\t\t<div style=\"position:absolute;left:381px;top:375px;width:624px\">\r\n\t\t\t<img alt=\"Water Buffalo\" width=\"256\" height=\"256\" src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-199df58a10154beebca3ca2ac4c69e4e!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-src-type=\"image/png\" data-fullres-src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-199df58a10154beebca3ca2ac4c69e4e!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-fullres-src-type=\"image/png\" />\r\n\t\t\t<br />\r\n\t\t</div>\r\n\t\t<div style=\"position:absolute;left:57px;top:111px;width:624px\">\r\n\t\t\t<img alt=\"Water Buffalo\" width=\"256\" height=\"256\" src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-8fe32926b9994022bc29527b6590f007!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-src-type=\"image/png\" data-fullres-src=\"https://graph.microsoft.com/v1.0/users('d2e7f1e9-3c9e-4f7a-8b6b-2302fee8af6a')/onenote/resources/1-8fe32926b9994022bc29527b6590f007!1-38E1572A-084A-4B2A-A530-2370B83A8542/$value\" data-fullres-src-type=\"image/png\" />\r\n\t\t\t<br />\r\n\t\t</div>\r\n\t</body>\r\n</html>\r\n"

1 Answers1

1

It seems inappropriate to set the Content-Type header to text/html when you cannot immediately interpret it as HTML. I'm thinking application/json is more appropriate if it is indeed JSON-escaped, which it seems to be.

In that case you could simply use Regex.Unescape("...") to replace the escaped characters (e.g. \n and \") with the actual characters they represent.

Xerillio
  • 4,855
  • 1
  • 17
  • 28
  • I'm pretty sure the response is indeed valid text/html which the OP then [views with the debugger](https://stackoverflow.com/q/7482360/11683). – GSerg Apr 25 '20 at 15:57