【软,码】发布XML/(X)HTML文本化工具

本文介绍了一款使用XHTML+JavaScript编写的XML/(X)HTML编解码工具。该工具能够将XML/(X)HTML代码转换为文本形式,便于在XHTML页面中展示。文章分享了工具的实现代码,并提供了从文件读取内容的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   刚才本来打算把这个工具的代码贴在这里的,可是忙活了半天,却没有贴成功,真让人泄气。来youkuaiyun.com安家是这两天的事情,还不是太熟悉它的操作环境。只好再熟悉一下,慢慢来了。

  这是一款使用XHTML+JavaScript写的XML/(X) HTML编解码程序。实现的功能其实很简单,或者叫做简陋,不过有时候它的确是一个不错的工具。尤其当需要把代码写入XHTML页面的时候,当然不能直接把代码嵌入到页面,这时候这个工具就派上了用场。

  代码刚才没有贴上来,只好当作资源上传到资源中心了。这么简陋的东东上传到资源中心,我也觉得有点不合适,不过当时只想着要把代码共享了,也只有那么做了。

  这个工具还是很有价值的,尤其提供了直接从文件中读取的功能。在IE中运行的时候,顶部的操作部分可以直接从硬盘的文件中读取源码,然后进行编解码工作,比复制->粘贴操作要方便一些。

  现在既然熟悉了优快云的操作环境,还是把代码放在这里。

      JavaScript部分如下:

    
/*
 *【File】
 *    Redfishx_XHTMLCoder.js
 *【Author】
 *    红鱼X (http://blog.youkuaiyun.com/redfishx)
 *【Start Date】
 *        2006年12月25日
 *【Update】
 *     2007年8月8日
 *【Description】
 *        提供一个类,Redfishx_XHTMLCoder。
 *     该类封装两个静态成员函数,执行对XML/(X)TML的相应的编码解码功能。
 *        Redfishx_XHTMLCoder.HTMLEncode执行编码,即对XML/(X) HTML进行文本化
 *    Redfixhx_XHTMLCoder.HTMLDecode执行解码,执行相反操作。
 
*/



Redfishx_XHTMLCoder 
= new Object();

Redfishx_XHTMLCoder.HTMLEncode 
= function(htmlCode)
    
{        
        
var gtChar = />/g;
        
var ltChar = /</g;
        
var quotChar = /"/g;
        var andChar = /&/g;
        var result = htmlCode.replace(andChar, 
"&amp;");//先替换&,若放在后面,会把&gt;&lt;&quot;中的&替换掉
        //可能是一个BUG,如果本行是代码的话,代码不运行window.alert(
"Type Of result:" + typeof(result));
        result = result.replace(quotChar, 
"&quot;");
        result = result.replace(gtChar, 
"&gt;");
        result = result.replace(ltChar, 
"&lt;");
        return result;
    }

Redfishx_XHTMLCoder.HTMLDecode = function(htmlCode)
    {
        var gtChar = /&gt;/g;
        var ltChar = /&lt;/g;
        var quotChar = /&quot;/g;
        var andChar = /&amp;/g;
        var result = htmlCode.replace(ltChar, 
"<");
        //可能是一个BUG,如果本行是代码的话,代码不运行window.alert(
"Type Of result:" + typeof(result));
        result = result.replace(quotChar, 
""");
        result 
= result.replace(gtChar, ">");
        result 
= result.replace(andChar, "&");//最后替换&,若放在前面,可能生成新的&gt;&lt;&quot;,那样就会替换掉本来不是这些串的字符串

        
return result;
    }


然后是XHTML部分

<html>
    
<head>
        
<title>Redfishx_XHTMLCoder</title>
        
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        
        
<script type="text/javascript" src="Redfishx_XHTMLCoder.js"></script>    
        
        
<script type="text/javascript">
        
        
function displayFileContent()
        
{
            
if(displayFileContent.arguments.length != 1)
            
{
                window.alert(
"displayFileContent 参数个数有误!");
                
return;
            }


            
var file = document.getElementById("filePath").value;//提供文件路径
            var hFSO, hFile; //定义用于保存FileSystemObject 句柄 和 文件句柄的变量
            var bEncode = displayFileContent.arguments[0];

            
try
            
{
                hFSO
=new ActiveXObject("Scripting.FileSystemObject"); //创建对FSO对象的引用
                hFile=hFSO.OpenTextFile(file); //打开文本文件
                var text;
                
if(bEncode)
                    text 
= Redfishx_XHTMLCoder.HTMLEncode(hFile.ReadAll()); //读取文件内容,并对特殊字符编码
                else
                    text 
= Redfishx_XHTMLCoder.HTMLDecode(hFile.ReadAll()); //读取文件内容,并对特殊字符解码

                hFile.Close(); 
//关闭文件
                showFileContent(text); //显示文件内容
            }

            
catch(e)
            
{
                window.alert(file);
                window.alert(
"Error Info:" + e.description);
            }

        }

        
        
function showFileContent()//打开一个新窗口,显示内容
        {
            
var text;
            
            
if(showFileContent.arguments.length != 1)
            
{
                window.alert(
"参数个数有误!");
                
return;
            }

            
            text 
= showFileContent.arguments[0];
            
            
var newwin=window.open('','','');  //打开一个窗口并赋给变量newwin。

            newwin.opener 
= null// 防止代码对论谈页面修改
            newwin.document.write("<code><pre>" + text + "</pre></code>");  //向这个打开的窗口中写入代码code,这样就实现了运行代码功能。
            newwin.document.close();
        }


        
function encode()
        
{
            
var oSrc = document.getElementById("textArea_source");
            
var oTarget = document.getElementById("textArea_target");
            oTarget.value 
= Redfishx_XHTMLCoder.HTMLEncode(oSrc.value);
        }


        
function decode()
        
{
            
var oSrc = document.getElementById("textArea_source");
            
var oTarget = document.getElementById("textArea_target");
            oTarget.value 
= Redfishx_XHTMLCoder.HTMLDecode(oSrc.value);
        }

        
</script>
        
        
<style type="text/css">
        
/* <![CDATA[ */
        body
            
{
                text-align
:center;
            
}

        textarea
            
{
                width
:80%;
                height
:300px;
            
}

        
/* ]]> */
        
</style>
    
</head>
    
<body>
        
<form>
            
<input type="file" id="filePath" />
                <
input type="button" value="Encoding" onclick="displayFileContent(true);" />
                <
input type="button" value="Decoding" onclick="displayFileContent(false);" />
            
<hr />
            Source Text:
<br />
            
<textarea id="textArea_source"></textarea><br /><br/>
            
<input type="button" value="Encode" onclick="encode();" />
               
<input type="button" value="Decode" onclick="decode();" /><br /><br />
            Target Text:
<br />
            
<textarea id="textArea_target"></textarea>
        
</form>
    
</body>
</html>

只要保留作者的签名,这片代码当然是可以供任何人(不滥用的人)随意传播使用的。希望对朋友们有所帮助。

  2007年8月8日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值