清理c#中contentEditable创建的HTML

时间:2014-08-28 10:57:34

标签: c# javascript jquery html css

我已经编写了一个文档编辑器,它使用contentEditable来创建HTML内容。在一些较大的文档中,语法的风格似乎到处都是。这很可能是从wordpad和早期版本的编辑器粘贴的内容的结果。

问题是,现在我留下了很多非常不一致的文件。

开始时相当正常。每行的简单<p>标记

<p>It is a truth</p>
<p>universally acknowledged</p>
<p>that a single&nbsp;man</p>

唯一的&#34;坏&#34;到目前为止,html是一些空的<i></i>标签,偶尔会出现&nbsp;而不是空格(有人知道为什么吗?)

然后它大约在文档的一半,换行符切换到这种格式。

<div>
    <br>
    CHAPTER 1<br>
    <br>
    The sky above the port
    <br>
    was the color of a television
    <br>
    tuned to a dead channel.
</div> 
<div>
    <br>
</div>

然后大约3/4页面,我们得到了这个。它似乎已恢复为<p></p>标记,但现在将它们随机嵌入<span>标记中,并带有空lang属性

<div>
    <span lang="">
        <p>It was the best of times,</p> 
        <p>it was the worst of times,</p> 
    </span>
    <p>it was the age of wisdom,</p>
    <p>it was the age of foolishness,</p>
</div>

注意:某些行位于<span>内,其他行位于外部。

更糟糕的是,稍后我们会获得嵌套的<span>代码

<span lang="">
    <div>
        <span lang="EN-GB">
            <p>Stately, plump </p> 
            <p>Buck Mulligan came </p> 
            <span lang="EN-GB">
                <p>from the stairhead, </p>
                <p>bearing a bowl of lather </p>                
                <span lang="EN-GB">
                    <p> on which a mirror and a razor lay crossed</p>
                </span>
            </span>
        </span>
    </div>
</span>

您可能还注意到<span><div>标记的成员资格现在已在一开始就被撤消,<div>现在是<span>

我注意到了其他奇怪的事情。 <i></i>在开始时使用,但稍后使用<em></em>

  1. 清理此HTML的最佳方法是什么?
  2. 我应该尝试使用<p>标记包围孤立的行吗?
  3. 如何仅删除包含<div>标记的<p>个标记?如何避免在文档中留下孤立的文本?

1 个答案:

答案 0 :(得分:1)

是一个很难回答的问题,我从文本编辑HTML时遇到了同样的问题。

我发现了这个免费的纯HTML + JS编辑器:TinyMCE

http://www.tinymce.com/

包括清除文本选项,您可以从文本中选择要清除的标记。

如果您有机会更改正在使用的编辑器,那就非常强大。