按呈现方式从html中提取空白折叠文本

按呈现方式从html中提取空白折叠文本,html,html-parsing,whitespace,collapse,removing-whitespace,Html,Html Parsing,Whitespace,Collapse,Removing Whitespace,我使用html解析器(Neko)来提取html文档的自由文本。 因为我对文本的语义感兴趣,所以我必须特别注意出现在浏览器中的单词之间的距离 例如: <H1>My title</H1> <P>Hello World</P> 在 <style> p { white-space:pre; } </style> 我想用不同的方式来对待它,因为“Hello”在语义上与“World”一词无关。正如在其

我使用html解析器(Neko)来提取html文档的自由文本。 因为我对文本的语义感兴趣,所以我必须特别注意出现在浏览器中的单词之间的距离

例如:

<H1>My
title</H1>
<P>Hello
                World</P>

<style>
p { white-space:pre; }
</style>
我想用不同的方式来对待它,因为“Hello”在语义上与“World”一词无关。正如在其他文章中所说的,解析和呈现的功能是有区别的。我对呈现后出现的单词之间的联系感兴趣,因为解析显然不会像浏览器上显示的那样折叠空白


在浏览器上阅读html时,有没有办法从html中提取空白折叠文本?

只要看一下W3C的基本信息

用例子更好地解释:

我还认为,你必须把hello放在1
中,把world放在另一个中,这样效果才会起作用。

否则,它们都会向右移动。

我以前没有使用过Neko,但您需要访问元素的样式,并查看
空白
属性是否设置为
pre
pre wrap
或preline

  • 如果是
    pre
    pre wrap
    ,请将文本中的任何空白组替换为单个空格

  • 否则,如果
    在行前
    ,则仅用单个空格替换空格/制表符组

  • 否则,请勿修改文本

  • 下面是一个使用JQuery的示例:

    JQuery


    请尝试“预包装”或“预行”(pre-wrap或pre-line),如果这不正常,这不是“预”选项的问题,而是加载css或seomThingTanks时的问题,但我想要的是根据浏览器上的显示方式从html代码中提取
    Hello World
    Hello[Spaces]World
    。抱歉。我想我不是很清楚。我的问题不是我作为一个html编辑器试图让浏览器显示我想要的文本。我实际上想做的是获取一个html文件并对其进行解析,以便提取浏览器上显示的文本(根据不同的情况使用连续空格或不使用连续空格)。我想我不太明白。但在我之上还有另一个答案。看看你是不是在寻找:)谢谢你把我推到正确的方向。我真的希望我不需要访问样式,也不需要在应用的元素上查找标记和折叠空格——我搜索了很多更简单的东西,但现在我发现没有办法了。所以我的第一步是用css解析器解析样式块。谢谢
    <style>
    p { white-space:pre; }
    </style>
    
    My title
    Hello
                        World
    
    function getRenderedText(obj) {
        var text = obj.text();
        var renderedText;
        switch (obj.css('white-space')) {
            case 'pre':
            case 'pre-wrap':
                renderedText = text;
                break;
            case 'pre-line':
                renderedText = text.replace(/[ \t]+/,' ');
                break;
            default:
                renderedText = text.replace(/\s+/,' ');
        }
        return renderedText;
    }