正在清理由contentEditable在c#中创建的HTML

本文关键字:创建 HTML contentEditable 理由 | 更新日期: 2023-09-27 18:20:00

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

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

它开始时相当正常。每条线的简单<p>标签

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

到目前为止,唯一"糟糕"的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>标签,但现在将它们随机嵌入到具有空lang属性的<span>标签中

<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> 的子级

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

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

正在清理由contentEditable在c#中创建的HTML

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

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

http://www.tinymce.com/

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

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