我有一些输入是通过文本区域输入的,然后将输入转换为html文档,然后将其解析为PDF文档。当我的用户输入小于号(              在此字符数据块中,我可以根据需要使用双破折号(以及如果我只添加htmlDocument.OptionOutputOptimizeAttributeValues = true;这给了我:              在此字符数据块中,我可以根据需要使用双破折号(以及我已经尝试了htmldocument上的所有选项,但没有一个让我指定解析器不应严格。另一方面,我也许可以忍受剥离void Main(){ var input = @"Within this Character Data block I can use double dashes as much as I want (along with <, &, ', and ') *and * % MyParamEntity; will be expanded to the text 'Has been expanded'...however, I can't use the CEND sequence(if I need to use it I must escape one of the brackets or the greater-than sign)."; var htmlDoc = WrapContentInHtml(input); htmlDoc.DocumentNode.OuterHtml.ToString().Dump();}private HtmlDocument WrapContentInHtml(string content){ var htmlBuilder = new StringBuilder(); htmlBuilder.AppendLine("<!DOCTYPE html>"); htmlBuilder.AppendLine("<html>"); htmlBuilder.AppendLine("<head>"); htmlBuilder.AppendLine("<title></title>"); htmlBuilder.AppendLine("</head>"); htmlBuilder.AppendLine("<body><div id='sagsfremstillingContainer'>"); htmlBuilder.AppendLine(content); htmlBuilder.AppendLine("</div></body></html>"); var htmlDocument = new HtmlDocument(); htmlDocument.OptionOutputOptimizeAttributeValues = true; var htmlDoc = htmlBuilder.ToString(); htmlDocument.LoadHtml(htmlDoc); return htmlDocument;}有人对我如何解决这个问题有想法吗?我能找到的最接近的问题是:Losing the 'less than' sign in HtmlAgilityPack loadhtml他实际上在抱怨编辑:我正在使用HtmlAgilityPack 1.4.9 最佳答案 您的内容公然错误。这与“严格性”无关,实际上与您假装一段文本是有效的HTML有关。实际上,您得到的结果正是因为解析器并不严格。当您需要在HTML中插入纯文本时,首先需要对其进行编码,以便将所有各种HTML控制字符正确转换为HTML-例如,必须将<更改为&lt;,将&更改为。解决此问题的一种方法是使用DOM-在目标&amp;上使用InnerText,而不是将字符串拍在一起并假装它们是HTML。另一种是使用一些显式的编码方法-例如div。
10-06 09:18