Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HAP解析HTML文档中的格式_C#_Html Agility Pack - Fatal编程技术网

C# HAP解析HTML文档中的格式

C# HAP解析HTML文档中的格式,c#,html-agility-pack,C#,Html Agility Pack,我使用以下代码从HTML文档中提取节点: var nodeCollection = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[2]"); HTML文档使用一些基本格式进行格式化,以增加Notepad++的可读性。HAP似乎正在解析此格式(一个新行和一些制表符缩进),并在返回的HTMLNode的innerHTML和innerText属性中返回它们: 我能在不改变输入文件的情况下缓解这种情况吗 免责声明:我是项目的所有者 i

我使用以下代码从HTML文档中提取节点:

var nodeCollection = doc.DocumentNode.SelectSingleNode(@"/html[1]/body[1]/div[2]");
HTML文档使用一些基本格式进行格式化,以增加Notepad++的可读性。HAP似乎正在解析此格式(一个新行和一些制表符缩进),并在返回的HTMLNode的
innerHTML
innerText
属性中返回它们:


我能在不改变输入文件的情况下缓解这种情况吗

免责声明:我是项目的所有者

innerHtml innerHtml做它应该做的事情。它显示HTML,包括所有HTML标记、空格、制表符和新行

因此,对于这一个,它的工作如预期

内部文本 对于这样的标签
DIV
,它应该不显示空格、制表符或新行

所以对于innerText,有一个bug

我已将此请求添加到我们的路线图中,并希望在下周一之前提供修复。当答案可用时,我将对其进行编辑

编辑:添加发布通知

自1.6.2版以来,改进了
InnerText
属性,以删除换行符、空格和制表符。在未来的版本中将有更多的改进,以更好地处理某些样式属性,这些属性也会影响
InnerText


但是,新的
InnerText
逻辑只有在将BackwardCompatibility设置为false时才可用,因为此更改对当前使用此库的用户有非常大的影响:
new HtmlDocument(){BackardCompatibility=false}

您是否尝试过
.Trim()
或者我误解了您的问题?@ManfredRadlwimmer这不一定有帮助,因为我需要添加到HTML中,然后重新插入到文档中。在不缓解当前解析问题的情况下,节点的内容可能会以与预期结果不一致的方式更改最终文档的外观,特别是如果我需要更改节点的属性而不仅仅是其中的文本。到目前为止,您做了哪些尝试?我只需要手动解析所有前导和尾随的空白字符,将它们存储在一对字符串中,进行所需的任何更改,然后将它们添加回修改后的字符串中。@ManfredRadlwimmer说实话,我认为这是HAP的一个错误。我是否正确地假设HAP解析文件的文本内容,然后简单地从中提取HTML元素?我不知道您的HTML实际上是什么样子,但如果制表符和换行符与您得到的完全一样,这绝不是HAP的错。解析器不应该修改它正在读取的任何内容,并且它无法知道空白的用途。简而言之,这不是一个bug,而是一个特性。如果您自己制作HTML,我建议不要在您计划解析的HTML标记中添加不需要的空格。