0

我正在为网站清理和实施定制的内容管理系统。网站上的所有页面都很简单,基本上是静态的,HTML 页面构建为一个简单的模板,如下所示:

<html>
    <head><!-- resources, scripts, etc. --></head>

    <body>

       <div id="page">

           <div id="header"><!--- static --></div>

           <div id="content">
                <!-- The main content - different on every page -->
           </div>

           <div>
             <!-- Side bar -- footer-- and other static persistent content -->
           </div>

       </div>
  </body>
</html>

我想要做的是批量查找并用#content变量或注释替换元素或什么都没有。我已经提取了内容并将其存储在与相应 HTML 文件位于同一目录中的文件中。

我可以看到两种基本途径来完成我想要的:

  1. #content用我想要的替换所有文件。

  2. 从页面中提取 html 并预处理或后处理数据以删除#content元素,然后将修改后的 html 写入新文件。

注意文件太多,无法一一进行。

我尝试了不同的方法来做到这一点,包括 jQuery 插件、各种 nodejs 解决方案、grepWin 和Xidel。Xidel 是最有用的,但我还没有弄清楚如何使用它来输出所有的 HTML 减去#content.

理想情况下,我想处理 的简单性$.replaceWith,即:

$('#content').replaceWith('...');

当然,如果就这么简单,我现在可能已经偶然发现它了。

有谁知道这方面的工具或解决方案?- 即使它位于提供文件查找和替换功能的代码编辑器中。这只需要完成一次,所以它不需要是程序化的。

编辑这是所需前后场景的示例。


<html>
    <head>
        I am content in the head - I should remain as I am
    </head>
    <body>
       <div id="page"><!-- Wrapper for all pages -->
           <div id="header">
               I am a static header - I should remain as I am
           </div>
           <div id="content">
                I am content - I am different on every page.  I would like to be replaced please.
          </div>
          <div>
              I am things like a sidebar, footer, copyright logo.
              I may or may not be wrapped in a div, but I don't need to be changed
          </div>
       </div><!-- End of wrapper -->
    </body>
 </html>

<html>
    <head>
        I am content in the head - I should remain as I am (see I haven't changed)
    </head>
    <body>
       <div id="page"><!-- Wrapper for all pages -->
           <div id="header">
               I am a static header - I should remain as I am (I haven't changed either)
           </div>
           <div id="content">
                I AM VERY DIFFERENT.  The only Thing inside of me is a variable. :)
          </div>
          <div>
              I am things like a sidebar, footer, copyright logo.
              I may or may not be wrapped in a div, but I don't need to be changed
              (Nope.  I haven't changed either)
          </div>
       </div><!-- End of wrapper -->
    </body>
 </html>
4

2 回答 2

0

我不确定你用它替换它是什么意思,@content除非它只是应该是文本,但是任何 DOM 解析器都可以很容易地完成这项工作。如果您可以通过命令行运行一个,它会很好用,但在 Chrome 等浏览器中也很容易做到。

使用 Chrome 打开 HTML 文档并打开控制台 (f12)。跑

var content = document.getElementById("content");
content.parentNode.removeChild(content);

现在您可以在 Elements 的根节点上右键单击并“复制为 HTML” <html>,甚至可以在控制台中打印 HTMLdocument.documentElement.innerHTML

于 2013-08-21T13:07:50.440 回答
0

使用记事本++,

打开您要编辑的所有页面,运行查找器并转到替换部分并在所有打开的页面中点击替换。

我想这将有助于批量更换。

于 2016-12-03T16:37:18.320 回答