【问题标题】:How to remove the insignificant whitespace in a XmlNodeType.Text node?如何删除 XmlNodeType.Text 节点中无关紧要的空格?
【发布时间】:2011-04-11 11:50:17
【问题描述】:

我有一个 html 节点:

<p>Line1
Line2
Line
ThereAreTwoSpacesAfterThis  ThereAreTwoSpacesBeforeThis
</p>

在任何浏览器中,最终使用结果是

Line1 Line2 Line ThereAreTwoSpacesAfterThis ThereAreTwoSpacesBeforeThis 

这是我想要的结果。

那么如何删除 XmlNodeType.Text 节点(C#)中无关紧要的空白?

================================================ ==========

大家好,感谢您的回复。

实际上,我正在做一个小项目来从网页 (html) 中提取所有文本:类似于 Firefox 或 IE 中的“将页面另存为文本文件”。

我尝试使用Html Agility Pack,但效果不够好。

我也尝试过使用 WebBrowser 控件,但它似乎太慢了,而且控制起来也不是那么容易。

有什么好主意吗?

我知道有人建议我使用正则表达式,但要考虑的情况太多了。

【问题讨论】:

  • 哇,大脂肪转移要求。您的问题最初是关于p 标记内的文本only 和关于删除空格的only。现在您在问如何以纯文本形式呈现整个 HTML 页面?!大概您还希望它正确解释每个元素上控制空白折叠的 CSS white-space 属性?您正在迈出编写成熟 HTML 渲染引擎的第一步。
  • 你是对的。对困惑感到抱歉。我用谷歌搜索并搜索了很多关于将 html 转换为纯文本的信息,但没有运气。我得到的只是使用 Html Agility Pack,这对我来说不够用。谢谢。

标签: c# html xml whitespace


【解决方案1】:

Just use a regular expression!

var spacesSquashed = Regex.Replace(input, @"\s+", " ", RegexOptions.Singleline);

如果您还想删除开头和结尾的所有空格,按照 HTML 的惯例,请在末尾添加一个额外的 .Trim()

【讨论】:

  • 很想投票,因为你引用了那句话:) 对于这个特定的用法,我猜 regex 没问题...
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2012-05-23
相关资源
最近更新 更多