Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Html 如何在非';是否有一个允许的标签列表?_Html_Parsing - Fatal编程技术网

Html 如何在非';是否有一个允许的标签列表?

Html 如何在非';是否有一个允许的标签列表?,html,parsing,Html,Parsing,我有一个很大的数据集,其中包含大量富文本编辑的内容块,这些内容块正在迁移到另一个系统。当涉及到允许的HTML标记时,新系统比旧系统更严格,我们需要能够在迁移数据之前识别数据中的哪些标记在输入时会被剪切或编码,并以错误的方式包含在内容中 例如,给定以下HTML: <h1>My page</h1><p>Lorem ipsum<marquee>SURPRISE!</marquee></p> My pageLorem ipsum惊

我有一个很大的数据集,其中包含大量富文本编辑的内容块,这些内容块正在迁移到另一个系统。当涉及到允许的HTML标记时,新系统比旧系统更严格,我们需要能够在迁移数据之前识别数据中的哪些标记在输入时会被剪切或编码,并以错误的方式包含在内容中

例如,给定以下HTML:

<h1>My page</h1><p>Lorem ipsum<marquee>SURPRISE!</marquee></p>
My pageLorem ipsum惊喜

我们对“h1”和“p”标记(列在某个异常列表中)不感兴趣,但理想情况下,我们希望能够看到突出显示的“选框”标记,以便在目视抽查中可以轻松识别和手动处理坏标记(目前我们预计数据集中不会有很多坏标记)

剥离不需要的标记很容易(考虑简单的PHP/Python/whatever),但我们不希望这样做,并可能丢失数据

同样,对标签进行编码也很容易,但我们不想将丑陋无用的标签作为内容的一部分导入


做这种事情最好的方法是什么?我忍不住想,我遗漏了一个简单的解决方案,或者我的想法是错误的。

在这种情况下,CSS可能是你的朋友

   * {
     text-decoration: line-through;
    }
   h1, p <list other allowed tags> {
    text-decoration: none;
    }
*{
文字装饰:线条贯通;
}
h1,p{
文字装饰:无;
}

您可以简洁地使用XPath获得意外元素的列表:

//*[name() != 'h1'
    and name() != 'p'
    and name() != 'b'
    and name() != 'span'
    and name() != 'div'
    and name() != 'body'
    and name() != 'a']
使用您选择的语言或类似(Chrome)的语言


“”的答案可能会给出一个更容易阅读的答案。

如果您正在手动编辑内容,并且只想突出显示问题标签,为什么不简单地使用javascript?在客户方面?我同意。为什么不直接使用CSS呢?如果某些元素是不可见的,您可以在{content:“!!!”;color:yellow}之后执行类似的操作,而不是设计实际元素的样式。无法保证惊喜标记具有可打印的表示形式(例如,
),您可以始终为其指定宽度/高度/背景色/任何颜色。如果您正在进行手动删除,这对我来说似乎是一个非常简单的解决方案。可以使用
:before
:after
来解决。但是为什么会有这样一个空的
a
?还是你指的是古老的神话啊哈!是的,这是我无法想象的优雅答案。我认为这应该涵盖大多数情况,然后我们可以根据需要单独查看/忽略任何令人惊讶的表示允许的标记。谢谢我也喜欢这种方法,同样优雅——但我可以将CSS解决方案交给一个业务人员自己使用;)谢谢你,谢谢你-我感觉很糟糕,因为这是我的第一个问题,我还不能投票!