实现HTML的简单压缩
PageReleaser需要一种HTML的压缩算法,Google了很久,发现如果只是简单去除空白和注释的话,使用XLinq就可以轻易的实现 先看看MSDN是怎么说的: 一种常用方案是读取缩进的 XML,在内存中创建一个没有任何空白文本节点(即不保留空白)的 XML 树,对该 XML 执行某些操作,然后保存带缩进的 XML。在序列化带格式的 XML 时,只保留 XML 树中有意义的空白。这是 LINQ to XML 的默认行为。 另一个常见的情况是读取和修改已经有意缩进的 XML。您可能不想以任何方式更改这种缩进。若要在 LINQ to XML 中执行此操作,您要在加载或解析 XML 时保留空白,并在序列化 XML 时禁用格式设置。 简单的说,XDocument载入时,默认使用LoadOptions::None,自动去掉XML的空白;保存时,默认使用SaveOptions::None,自动格式化XML。 也就是说,使用XDocument将一个HTML文档打开什么也不作就保存,其实等于实现了HTML的格式化。 而如果在保存时,使用SaveOptions::DisableFormatting参数,看似要保存XML的空白,由于载入时所有空白都被删掉了,其实等于删除了所有空白,于是去掉空白就这样实现了。 至于删掉注释也很简单,只是需要注意,一般页面嵌入JavaScript会使用注释节点包裹,需要例外处理。 整个HTML压缩代码如下: var nodes = from s in doc.DescendantNodes()
where s.NodeType == XmlNodeType.Comment &&
string.Compare( s.Parent.Name.LocalName, "script", true ) != 0
select s; nodes.Remove();
doc.Save( sm.OutputPath + "index.html", SaveOptions.DisableFormatting ); 简单吧,不过HTML不能直接使用XML解析器,需要预先转换为XHTML,点击察看转换实现。
相关文档:
aspx 生成HTML 静态页 :http://www.cnblogs.com/ejiyuan/archive/2007/11/09/954325.html
cs 页:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
u ......
<body>
<iframe name="pic" src=""; width="400" height="300" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe>
<p>
<a href="www.163.com" mce_href="www.163.com" target="pic">网易</a>
<a href="www.sina.com.cn" mce_href="www.sina.com.cn" ......
如果用webbrowser的document去获取IFrame这个对象,随后一定会得到accessdenied的错误,为什么?
找了一下,据说是不能跨域访问...
终于有一天,试了一下,在OnDocumentComplete事件里面返回的dispatch就是iframe的IHTMLWindow2对象,在那里可以操作所有的对象,然后,你想做什么就随你了,不知道如果这个时候保存了这个I ......
根据剪贴板的原理,在获取剪贴板内容之前,必须指定要获取内容的格式。由于剪贴板中的数据可能存在多种格式,所以有必要对剪贴板的格式类型先做一些了解。W写下了以下的测试代码:
procedure TForm1.Button3Click(Sender: TObject);
var
i: integer;
Buffer: PChar;
s: string;
begin
M ......
<Html>
<Head>
<SCRIPT LANGUAGE="JavaScript">
<!--
//定义 select 原值
var oldValue,oldText;
//select下拉框的onkeydown事件,修改下拉框的值
function catch_keydown(sel){
switch(event.keyCode) {
case 13: //回 ......