如何从html中删除所有属性?

时间:2014-01-08 18:12:19

标签: javascript html node.js text-processing text-parsing

我有原始的html,里面有一些css类用于各种标签。

示例:

输入:

<p class="opener" itemprop="description">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque molestias natus iste labore a accusamus dolorum vel.</p>

我希望得到简单的HTML:

输出:

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque molestias natus iste labore a accusamus dolorum vel.</p>

我不知道这些类的名称。我需要在JavaScript(node.js)中执行此操作。

有什么想法吗?

8 个答案:

答案 0 :(得分:11)

正如我在评论中所指出的,这可以通过Cheerio来完成 要删除所有元素的所有属性,您需要:

var html = '<p class="opener" itemprop="description">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Neque molestias natus iste labore a accusamus dolorum vel.</p>';

var $ = cheerio.load(html);   // load the HTML

$('*').each(function() {      // iterate over all elements
    this.attribs = {};     // remove all attributes
});

var html = $.html();          // get the HTML back

答案 1 :(得分:4)

我会使用标签名称和该元素的innerHTML创建一个新元素。然后,您可以使用新元素替换旧元素,或使用newEl执行任何操作,如下面的代码所示:

// Get the current element
var el = document.getElementsByTagName('p')[0];

// Create a new element (in this case, a <p> tag)
var newEl = document.createElement(el.nodeName);

// Assign the new element the contents of the old tag
newEl.innerHTML = el.innerHTML;

// Replace the old element with newEl, or do whatever you like with it

答案 2 :(得分:1)

也许js中的一些正则表达式可以拔出那些css标签,然后输出精简版本?多数民众赞成如果我理解你的问题相关

答案 3 :(得分:0)

也许,只需使用Notepad ++,快速的“查找/替换”操作和空格将是最快的方式,而不是在解析器或类似的东西中思考。

答案 4 :(得分:0)

即兴发布:

$('.some_div').each(function(){
    class_name = $(this).attr('class');
    $(this).removeClass(class_name)})

答案 5 :(得分:0)

在python中,这样做但是提供一个文件和标签列表而不是硬编码的列表,然后换成for循环:

#!/usr/bin/env python
# encoding: utf-8
import re
f=open('fileWithHtml','r')

for line in f.readlines():
        line = re.sub('<p\s(.*)>[^<]', '<p>', line)
        print(line)

最有可能的是,这可以很容易地转换为nodejs的JavaScript

答案 6 :(得分:0)

您可以使用DOM(或SAX,取决于您想要执行的操作)动态解析元素,解析并删除所有符合的样式属性。

在JavaScript上,您可以使用HTML DOM removeAttribute()方法。

<script>
  function myFunction()
  {
    document.getElementsByClassName("your div class")[0].removeAttribute("style"); 
};
</script>

答案 7 :(得分:0)

我提供了客户端(浏览器)版本,当我用Google搜索删除HTML属性时出现了这个答案:

CONCAT_WS

作为一项功能:

CONCAT_WS(', ',
        IF(`address1` != '', `address1`, NULL),
        IF(`address2` != '', `address2`, NULL),
        IF(`address3` != '', `address3`, NULL),
        IF(`city` != '', `city, NULL),
        IF(`zip` != '', `zip, NULL)
)
相关问题