<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[唐太宗-------卍aspx(C#)卐]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[依托.NET技术，交流企业内部应用系统开发,如OA、CRM、客户服务、售后服务、物流揽收、调度、运维管理等等，从系统架构的设计、分析及设计模式的角度探讨企业应用开发设计及管理，为企业创造价值。]]></description>
<link>http://hi.baidu.com/educast</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[用javascript操作xml]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/885c1b4c280aa3ffd72afcd4.html]]></link>
        <description><![CDATA[
		
		<p>文中尽量用上所有的操作和属性，以做示范</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: #000000">&lt;</span><span style="color: #000000">script language</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">JavaScript</span><span style="color: #000000">&quot;</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&lt;!--</span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff">var</span><span style="color: #000000"> doc </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ActiveXObject(</span><span style="color: #000000">&quot;</span><span style="color: #000000">Msxml2.DOMDocument</span><span style="color: #000000">&quot;</span><span style="color: #000000">); </span><span style="color: #008000">//</span><span style="color: #008000">ie5.5+,CreateObject(&quot;Microsoft.XMLDOM&quot;) </span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #008000">//</span><span style="color: #008000">加载文档</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">//</span><span style="color: #008000">doc.load(&quot;b.xml&quot;);</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #008000">//</span><span style="color: #008000">创建文件头</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #0000ff">var</span><span style="color: #000000"> p </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createProcessingInstruction(</span><span style="color: #000000">&quot;</span><span style="color: #000000">xml</span><span style="color: #000000">&quot;</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">version='1.0'&nbsp;&nbsp; encoding='gb2312'</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加文件头</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; doc.appendChild(p);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #008000">//</span><span style="color: #008000">用于直接加载时获得根接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">//</span><span style="color: #008000">var root = doc.documentElement;</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #008000">//</span><span style="color: #008000">两种方式创建根接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp; var root = doc.createElement(&quot;students&quot;);</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> root </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createNode(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">students</span><span style="color: #000000">&quot;</span><span style="color: #000000">,</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建子接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> n </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createNode(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">&quot;</span><span style="color: #000000">ttyp</span><span style="color: #000000">&quot;</span><span style="color: #000000">,</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">指定子接点文本</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">n.text = &quot; this is a test&quot;;</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建孙接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> o </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createElement(</span><span style="color: #000000">&quot;</span><span style="color: #000000">sex</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o.text </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">男</span><span style="color: #000000">&quot;</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">指定其文本</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建属性</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> r </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createAttribute(</span><span style="color: #000000">&quot;</span><span style="color: #000000">id</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r.value</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">test</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加属性</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.setAttributeNode(r);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建第二个属性&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> r1 </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createAttribute(</span><span style="color: #000000">&quot;</span><span style="color: #000000">class</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r1.value</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000">tt</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加属性</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.setAttributeNode(r1);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">删除第二个属性</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.removeAttribute(</span><span style="color: #000000">&quot;</span><span style="color: #000000">class</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加孙接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.appendChild(o);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加文本接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.appendChild(doc.createTextNode(</span><span style="color: #000000">&quot;</span><span style="color: #000000">this is a text node.</span><span style="color: #000000">&quot;</span><span style="color: #000000">));<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加注释</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n.appendChild(doc.createComment(</span><span style="color: #000000">&quot;</span><span style="color: #000000">this is a comment\n</span><span style="color: #000000">&quot;</span><span style="color: #000000">));<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加子接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.appendChild(n);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">复制接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> m </span><span style="color: #000000">=</span><span style="color: #000000"> n.cloneNode(</span><span style="color: #0000ff">true</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.appendChild(m);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">删除接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.removeChild(root.childNodes(</span><span style="color: #000000">0</span><span style="color: #000000">));<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">创建数据段</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> c </span><span style="color: #000000">=</span><span style="color: #000000"> doc.createCDATASection(</span><span style="color: #000000">&quot;</span><span style="color: #000000">this is a cdata</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c.text </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">hi,cdata</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加数据段</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root.appendChild(c);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">添加根接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; doc.appendChild(root);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">查找接点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> a </span><span style="color: #000000">=</span><span style="color: #000000"> doc.getElementsByTagName(</span><span style="color: #000000">&quot;</span><span style="color: #000000">ttyp</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">var a = doc.selectNodes(&quot;//ttyp&quot;);</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">显示改接点的属性</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">a.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span ><span style="color: #000000">{<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(a[i].xml);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000"> j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">a[i].attributes.length;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img style="display: none" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span ><span style="color: #000000">{<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(a[i].attributes[j].name);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">修改节点,利用XPATH定位节点</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> b </span><span style="color: #000000">=</span><span style="color: #000000"> doc.selectSingleNode(</span><span style="color: #000000">&quot;</span><span style="color: #000000">//ttyp/sex</span><span style="color: #000000">&quot;</span><span style="color: #000000">);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp; b.text </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">女</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert(doc.xml);</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">XML保存（需要在服务端，客户端用FSO）</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">doc.save();</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">查看根接点XML</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n)<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img style="display: none" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span ><span style="color: #000000">{<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(n.ownerDocument.xml);<br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp; }</span></span><span style="color: #000000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #008000">//</span><span style="color: #008000">--&gt;</span><span style="color: #008000"><br>
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: #000000">&lt;/</span><span style="color: #000000">script</span><span style="color: #000000">&gt;</span></div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/885c1b4c280aa3ffd72afcd4.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-29  11:03</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/885c1b4c280aa3ffd72afcd4.html</guid>
</item>

<item>
        <title><![CDATA[SQL2005中大数据量检索的分页收藏]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/aab37e3e8b29be3b70cf6caf.html]]></link>
        <description><![CDATA[
		
		<p>仅列出实例SQL，其他的请大家自己完成吧</p>
<p>@StartIndex为当前页起始序号，@EndIndex为当前页结束记录序号，可以直接作为参数输入，也可以通过输入PageSize和PageIndex计算得出</p>
<p> </p>
<p>select * from<br>
(<br>
select *,row_number() over(order by OrderColumn) as orderindex from TableName<br>
) as a<br>
where a.orderindex between @StartIndex and @EndIndex</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/aab37e3e8b29be3b70cf6caf.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-28  11:32</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/aab37e3e8b29be3b70cf6caf.html</guid>
</item>

<item>
        <title><![CDATA[C# 字符转ASCII码，ASCII码转字符]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/11aa0df3a7c00ccd0a46e0d1.html]]></link>
        <description><![CDATA[
		
		<p><font size="2">public static int Asc(string character)<br>
&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; if (character.Length == 1)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();<br>
&nbsp;&nbsp;&nbsp;&nbsp; int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];<br>
&nbsp;&nbsp;&nbsp;&nbsp; return (intAsciiCode);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception(&quot;Character is not valid.&quot;);<br>
&nbsp;&nbsp;&nbsp; }</font></p>
<p><font size="2">&nbsp;&nbsp; }</font></p>
<p><font size="2"><strong>ASCII码转字符：</strong></font></p>
<p><font size="2">public static string Chr(int asciiCode)<br>
&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp; if (asciiCode &gt;= 0 &amp;&amp; asciiCode &lt;= 255)<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();<br>
&nbsp;&nbsp;&nbsp;&nbsp; byte[] byteArray = new byte[] { (byte)asciiCode };<br>
&nbsp;&nbsp;&nbsp;&nbsp; string strCharacter = asciiEncoding.GetString(byteArray);<br>
&nbsp;&nbsp;&nbsp;&nbsp; return (strCharacter);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp; throw new Exception(&quot;ASCII Code is not valid.&quot;);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp; }</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/11aa0df3a7c00ccd0a46e0d1.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-28  11:00</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/11aa0df3a7c00ccd0a46e0d1.html</guid>
</item>

<item>
        <title><![CDATA[一条语句查询数据库中所以表的信息]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/b7a334faf0d2088f9e5146ad.html]]></link>
        <description><![CDATA[
		
		<p><font color="#515151" size="3">SELECT 表名=case when a.colorder=1 then d.name else '' end,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  字段序号=a.colorder,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  字段名=a.name,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (SELECT name FROM sysindexes WHERE indid in(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid))) then '√' else '' end,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  类型=b.name,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  占用字节数=a.length,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  允许空=case when a.isnullable=1 then '√'else '' end,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  默认值=isnull(e.text,''),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  字段说明=isnull(g.[value],''),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  创建时间=d.crdate<br>
&nbsp;&nbsp;  FROM syscolumns a <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  left join systypes b on a.xtype=b.xusertype <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name&lt;&gt;'dtproperties'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  left join syscomments e on a.cdefault=e.id <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  left join sysproperties g on a.id=g.id and a.colid=g.smallid <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  left join sysproperties f on d.id=f.id and f.smallid=0 <br>
&nbsp;&nbsp;&nbsp;  --where d.name='此处可添加要查询的表名'<br>
&nbsp;&nbsp;  Order by a.id,a.colorder</font></p>
<p><font color="#515151" size="3">可以在where语句中填写要查询指定表的名称,将显示指定的结构信息和说明</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/b7a334faf0d2088f9e5146ad.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-26  22:04</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/b7a334faf0d2088f9e5146ad.html</guid>
</item>

<item>
        <title><![CDATA[利用vs.net开发windows服务(c#)]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/f74af11fec414bf3e1fe0b77.html]]></link>
        <description><![CDATA[
		
		<h1 class="postTitle"> </h1>
<div class="clear"> </div>
<div class="postBody">
<p><font face="Verdana" size="2">在很多应用中需要做windows服务来操作数据库等操作，比如<br>
（1）一些非常慢的数据库操作，不想一次性去做，想慢慢的通过服务定时去做，比如定时为数据库备份等<br>
（2）在.net Remoting中利用windows服务来做Host<br>
<br>
利用vs.net我们可以在几分钟之内建立其windows服务，非常简单<br>
<br>
下面说一下步骤<br>
1. 新建一个项目<br>
2. 从一个可用的项目模板列表当中选择Windows服务<br>
3. 设计器会以设计模式打开<br>
4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 要确保是从组件列表而不是从Windows窗体列表当中使用Timer) <br>
5. 设置Timer属性，Interval属性200毫秒（1秒进行5次数据库操作）<br>
6. 然后为这个服务填加功能<br>
7.双击这个Timer，然后在里面写一些数据库操作的代码，比如<br>
<font style="background-color: rgb(245,245,220)"> SqlConnection conn=new SqlConnection(&quot;server=127.0.0.1;database=test;uid=sa;pwd=275280&quot;);<br>
&nbsp;&nbsp;&nbsp; SqlCommand comm=-new SqlCommand(&quot;insert into tb1 (&lsquo;111&lsquo;,11)&quot;,conn);<br>
&nbsp;&nbsp;&nbsp; conn.Open();<br>
&nbsp;&nbsp;&nbsp; comm.ExecuteNonQuery();<br>
&nbsp;&nbsp;&nbsp; conn.Close();</font><br>
8. 将这个服务程序切换到设计视图<br>
9. 右击设计视图选择&ldquo;添加安装程序&rdquo;<br>
10. 切换到刚被添加的ProjectInstaller的设计视图<br>
11. 设置serviceInstaller1组件的属性： <br>
&nbsp;&nbsp;&nbsp;&nbsp; 1) ServiceName = My Sample Service<br>
&nbsp;&nbsp;&nbsp;&nbsp; 2) StartType = Automatic (开机自动运行)<br>
12. 设置serviceProcessInstaller1组件的属性&nbsp;&nbsp; Account = LocalSystem<br>
13. 改变路径到你项目所在的bin\Debug文件夹位置(如果你以Release模式编译则在bin\Release文件夹)<br>
14.  执行命令&ldquo;InstallUtil.exe MyWindowsService.exe&rdquo;注册这个服务，使它建立一个合适的注册项。 (InstallUtil这个程序在WINDOWS文件夹\Microsoft.NET\Framework\v1.1.4322下面)<br>
15. 右击桌面上&ldquo;我的电脑&rdquo;，选择&ldquo;管理&rdquo;就可以打计算机管理控制台<br>
16. 在&ldquo;服务和应用程序&rdquo;里面的&ldquo;服务&rdquo;部分里，你可以发现你的Windows服务已经包含在服务列表当中了<br>
17. 右击你的服务选择启动就可以启动你的服务了<br>
看看数据库是不是一秒多了5个记录啊<br>
<br>
<font style="background-color: rgb(255,255,0)">需要注意的是:<br>
如果你修改了这个服务，路径没有变化的话是不需要重新注册服务的，如果路径发生了变化，需要先卸载这个服务InstallUtil.exe /u参数，然后再重新安装这个服务，不能直接安装。还有就是windows服务是没有界面的，不要企图用控制的输出方式来输出一些信息，你只能添加一个EventLog，通过WriteEntry()来写日志。<br>
<br>
<font style="background-color: rgb(255,255,255)">关于怎么用windows服务来做一个远程服务可以看一下</font><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp"><font style="background-color: rgb(255,255,255)">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT15.asp</font></a></font></font></p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/f74af11fec414bf3e1fe0b77.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-22  09:21</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/f74af11fec414bf3e1fe0b77.html</guid>
</item>

<item>
        <title><![CDATA[.NET中Cache的使用]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/fa81bd31829157ae5fdf0ef8.html]]></link>
        <description><![CDATA[
		
		Cache 即高速缓存 ，我想很多人对他的第一印象一定像我一样，感觉他一定能提高系统得性能和运行速度。的确.Net推出cache的初衷确实是这样的。那么cache是如何提高系统性能与运行速度呢？是不是在任何情况下用cache都能提高性能？是不是cache用的越多就越好呢？我在近期开发的项目中有所体会，写下来当作总结也希望能跟大家一起探讨探讨，有错误的地方希望大家批评指正。<br>
<br>
　　1. Cache 是如何工作的。<br>
　　l Cache 是分配在服务器上的一个公共的内存片。<br>
　　所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它，它面向的是所有用户，相对而言session也是服务器上的一段内存，但他面向的是单个用户。它是服务器的一段内存块，也就是说每个cache一经创建就占用了服务器资源的。所以从这点来说我们就可以说：并不是cache越多越好。<br>
<br>
　　l cache 是有时间限制的，超过了服务器设定的过期时间，它就会被服务器回收。<br>
　　l c.cache 可以存放任何对象<br>
　　2. Cache 如何创建以及如何销毁。<br>
　　l 创建cache<br>
　　在.Net环境下通过Cache.Insert(string key,object o)方法创建。其中key 代表cache的ID,o代表存到cache里的对象。<br>
<br>
　　l 销毁cache.<br>
　　通过方法Cache.Remove(string key)其中key 代表cache的 ID.<br>
<br>
　　l 调用cache.<br>
　　Cache支持装箱/拆箱操作。如你可以把一个DataSet对象ds通过Cache.Insert(&ldquo;dsCache&rdquo;,ds)的方式存到Cache中，可以通过拆箱操作 DataSet ds = (DataSet)Cache[&ldquo;dsCache&rdquo;]来访问它。<br>
<br>
　　3. 什么时候用cache.<br>
　　Cache 一般用于数据较固定，用的较频繁的地方。例如可以把进销存系统中可以把产品信息存入cache,在用户调用产品信息时通过调用cache即可，这样从很大程度上减少了用户与数据库的交互，提高了系统的性能。反之，cache不适合用在数据变动快，使用范围很窄的地方。例如把一个具体采购单存入 cache中。<br>
<br>
　　4. cache 调用注意事项。<br>
　　Cache是有时间限制的。超过了服务器设置的过期时间，就会被服务器回收。当cache被回收后对应的内存块就会被清空，再次通过cache[&ldquo;cachekey&rdquo;]访问对象时返回的就是null值。所以以下这种调用就会出现异常<br>
DataSet ds = (DataSet)Cache[&ldquo;cacheds&rdquo;]; <br>
DataRow dr = ds.Table[0].Row[0]; //出错，ds为null值，不存在表0。<br>
　　正确的写法应该是：<br>
DataSet ds<br>
If(Cache[&ldquo;cacheds&rdquo;] != null)<br>
{<br>
ds = (DataSet)Cache[&ldquo;cacheds&rdquo;]; <br>
}<br>
<br>
Else<br>
{<br>
ds= GetDsFromDataBase(); <br>
}<br>
DataRow dr = ds.Table[0].Row[0]; 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/fa81bd31829157ae5fdf0ef8.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-21  11:36</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/fa81bd31829157ae5fdf0ef8.html</guid>
</item>

<item>
        <title><![CDATA[C#对象缓存类]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/565ee7cd50fbc1570eb34578.html]]></link>
        <description><![CDATA[
		
		<p>using System;<br>
using System.Data;<br>
using System.Configuration;<br>
using System.Web;<br>
using System.Web.Security;<br>
using System.Web.UI;<br>
using System.Web.UI.WebControls;<br>
using System.Web.UI.WebControls.WebParts;<br>
using System.Web.UI.HtmlControls;</p>
<p>/// &lt;summary&gt;<br>
/// 数据缓存保存信息异步处理委托<br>
/// &lt;/summary&gt;<br>
delegate void EventSaveCache(object key, object value);<br>
/// &lt;summary&gt;<br>
/// 对象缓存类<br>
/// &lt;/summary&gt;<br>
public class Cache<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp; private MappingContainer mContainer;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 获取或设置当前缓存对象所在的关系映象容器<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public MappingContainer Container<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return mContainer;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mContainer = value;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 构造缓存对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public Cache()<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO: 在此处添加构造函数逻辑<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 用于缓存数据的Hashtable<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; protected System.Collections.Hashtable _Cache = new System.Collections.Hashtable();<br>
&nbsp;&nbsp;&nbsp;&nbsp; protected Object _LockObj = new object();<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 获取指定键值的对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;键值&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;object&lt;/returns&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public virtual object GetObject(object key)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_Cache.ContainsKey(key))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _Cache[key];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 把对象按指定的键值保存到缓存中<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;键值&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;value&quot;&gt;保存的对象&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public void SaveCaech(object key, object value)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventSaveCache save = new EventSaveCache(SetCache);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IAsyncResult ar = save.BeginInvoke(key, value, new System.AsyncCallback(Results), null);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; private void Results(IAsyncResult ar)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventSaveCache fd = (EventSaveCache)((AsyncResult)ar).AsyncDelegate;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fd.EndInvoke(ar);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 把对象按指定的键值保存到缓存中<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;键值&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;value&quot;&gt;保存的对象&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; protected virtual void SetCache(object key, object value)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock (_LockObj)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!_Cache.ContainsKey(key))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Cache.Add(key, value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; public int Count<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _Cache.Count;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 在缓存中删除指定键值的对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;键值&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public virtual void DelObject(object key)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock (_Cache.SyncRoot)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Cache.Remove(key);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 清除缓存中所有对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public virtual void Clear()<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock (_Cache.SyncRoot)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Cache.Clear();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
}</p>
<p>/// &lt;summary&gt;<br>
///针对一条记录操作命令的缓存类<br>
/// &lt;/summary&gt;<br>
public class CachePersistentCommand : Cache<br>
{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 把记录操作命令缓存到内存中<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;标识&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;value&quot;&gt;值&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; protected override void SetCache(object key, object value)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock (_LockObj)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int count = 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Container.Config.CommandsCache.ContainsKey(key))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count = (int)Container.Config.CommandsCache[key];<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Collections.IList _list;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果缓存中已经存在这种命令的列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_Cache.ContainsKey(key))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _list = (System.Collections.IList)_Cache[key];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (count &gt; 0)//命令的缓存总数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_list.Count &lt; count)//缓存数据量少于缓存总数<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _list.Add(value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_list.Count &lt; Container.Config.CommandBuffer)//缓存数小于组件的默认列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _list.Add(value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else//如果不存在列表<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (count &gt; 0 || Container.Config.CommandBuffer &gt; 0)//如果组件允许对象缓存<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _list = new System.Collections.ArrayList();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _list.Add(value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Cache.Add(key, _list);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// 从缓存中获取相关命令对象<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name=&quot;key&quot;&gt;标识&lt;/param&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;IPersistentCommand&lt;/returns&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp; public override object GetObject(object key)<br>
&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (_Cache.Contains(key))//如果命令存在缓冲中<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (IPersistentCommand cmd in (System.Collections.IList)_Cache[key])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!cmd.State)//命令是否可以过行锁定<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cmd.Lock())//命令锁定<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return cmd;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br>
&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>}</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/565ee7cd50fbc1570eb34578.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-19  17:41</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/565ee7cd50fbc1570eb34578.html</guid>
</item>

<item>
        <title><![CDATA[C#中利用缓存优化WEB性能]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/d5a43bf39ef7b656342acc7f.html]]></link>
        <description><![CDATA[
		
		<p>在 Cache 中存储数据的最简单的方法就是使用一个键为其赋值，就像 HashTable 或 Dictionary 对象一样：　　</p>
<p>　　Cache[&quot;key&quot;] = &quot;value&quot;;　　</p>
<p>　　这种做法将在缓存中存储项，同时不带任何依赖项，因此它不会到期，除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项，可使用 Add() 或 Insert() 方法。其中每个方法都有几个重载。Add() 和 Insert() 之间的唯一区别是，Add() 返回对已缓存对象的引用，而 Insert() 没有返回值（在 C# 中为空，在 VB 中为 Sub）。　　</p>
<p>.NET中缓存分为为几种,在这里我介绍种较常用的缓存方式,能极大限度的提高WEB的性能. 看下面一段代码:</p>
<p>private static City GetCityInfo(string cityname,string citycode)<br>
&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;  string cacheKey=&quot;City&quot;+cityname+citycode;</p>
<p>&nbsp;&nbsp;&nbsp;  if( HttpRuntime.Cache[cacheKey]==null)<br>
&nbsp;&nbsp;&nbsp;  {<br>
&nbsp;&nbsp;&nbsp;&nbsp;  City city=null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;  SincooWapDataProvider dp=new SincooWapDataProvider(ConnInfo.Conn71NewWap);&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  city =dp.GetCityInfo(cityname,citycode); <br>
&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  HttpRuntime.Cache.Insert(cacheKey,city,null,DateTime.Now.AddMinutes(5),TimeSpan.Zero);&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;  }&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;  return (City)HttpRuntime.Cache[cacheKey]; <br>
&nbsp;&nbsp;  }</p>
<p>代码片断中出现的</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;  City city=null;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;  SincooWapDataProvider dp=new SincooWapDataProvider(ConnInfo.Conn71NewWap);&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;  city =dp.GetCityInfo(cityname,citycode);</p>
<p>这是我获取的数据集及获取方式,不用管,看下面的</p>
<p>HttpRuntime.Cache.Insert(cacheKey,city,null,DateTime.Now.AddMinutes(5),TimeSpan.Zero);</p>
<p>具体的HttpRuntime.Cache.Insert()的使用方法请参考相关文档,这里不做具体介绍.</p>
<p> </p>
<p>通过这种方式,就能避免重复读取数据库,提高效率,缺点是不能及时获取到信息,在频繁更新的页面不推荐!</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/d5a43bf39ef7b656342acc7f.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-19  17:39</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/d5a43bf39ef7b656342acc7f.html</guid>
</item>

<item>
        <title><![CDATA[如果实现选取数据库中不连续的数？？]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/b7a334facb75278f9f514606.html]]></link>
        <description><![CDATA[
		
		<p>比如   <br>
  有一数据库：   <br>
    <br>
      <br>
  1   <br>
  2   <br>
  4   <br>
  5   <br>
  7   <br>
  8   <br>
  9   <br>
  11   <br>
    <br>
  要如何才能选出4   7   11   ？</p>
<p>答案：</p>
<p>select   *   from   表   where   列   not   in   (select   列+1   from   表)   and   列&gt;(select   min(列)   from   表)</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/b7a334facb75278f9f514606.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-18  18:25</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/b7a334facb75278f9f514606.html</guid>
</item>

<item>
        <title><![CDATA[临时表的使用]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/573f023bf8ee90ec14cecb62.html]]></link>
        <description><![CDATA[
		
		select distinct * into #Tmp from tableName <br>
drop table tableName <br>
select * into tableName from #Tmp <br>
drop table #Tmp <br> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/573f023bf8ee90ec14cecb62.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-17  14:42</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/573f023bf8ee90ec14cecb62.html</guid>
</item>

<item>
        <title><![CDATA[oracle、sqlserver数据库排序空值null问题解决办法]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/f0b7b17e766e343e0dd7dafd.html]]></link>
        <description><![CDATA[
		
		<div class="date"> </div>
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" >
            <p>【oracle】：</p>
            <p><strong>oracle认为 null 最大。</strong></p>
            <p><strong>升序排列，</strong>默认情况下，null值排后面。</p>
            <p><strong>降序排序，</strong>默认情况下，null值排前面。</p>
            <p>有几种办法改变这种情况：</p>
            <p>（1）用 nvl 函数或decode 函数 将null转换为一特定值</p>
            <p>（2）用case语法将null转换为一特定值（oracle9i以后版本支持。和sqlserver类似）：<br>
            order by (case mycol when null then '北京漂客'&nbsp;&nbsp;&nbsp;&nbsp;  else&nbsp;&nbsp;  mycol&nbsp;&nbsp;  end)</p>
            <p>（3）使用nulls first 或者nulls last 语法。</p>
            <p>这是oracle专门用来null值排序的语法。</p>
            <p>nulls first ：将null排在最前面。如：select * from mytb order by mycol nulls first</p>
            <p>null last ：将null排在最后面。如：select * from mytb order by mycol nulls last</p>
            <p> </p>
            <p>【sqlserver】：</p>
            <p><strong>sqlserver 认为 null 最小。</strong></p>
            <p><strong>升序排列</strong>：null 值默认排在最前。</p>
            <p>要想排后面，则：order by case when col is null then 1 else 0 end ,col</p>
            <p><strong>降序排列</strong>：null 值默认排在最后。</p>
            <p>要想排在前面，则：order&nbsp;&nbsp;  by case when col is null then 0 else 1 end , col desc</p>
            <p>如果要想让含有null的列按照自己的意愿进行排序，可做如下处理。</p>
            </div>
            </td>
        </tr>
    </tbody>
</table> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/f0b7b17e766e343e0dd7dafd.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-14  16:53</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/f0b7b17e766e343e0dd7dafd.html</guid>
</item>

<item>
        <title><![CDATA[sql server 2005中的except和INTERSECT运算(附加Compute by子句)]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/e9b76227e063a705908f9d3a.html]]></link>
        <description><![CDATA[
		
		<div class="tit"> </div>
<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" >
            <p>一直学<a href="http://www.knowsky.com/sql.asp">数据库</a>的都知道，关系运算有交，差，并，等运算，而之前的版本一直只看到并，好象很少看到有差，交的运算显式的表达在操作SQL语句中，现在好了，SQL SERVER 2005中有差，交运算了，分别是except和intersect，、今天看到，学习之，并举例如下：</p>
            <p>EXCEPT 和 INTERSECT 运算符使您可以比较两个或多个 SELECT 语句的结果并返回非重复值。EXCEPT 运算符返回由 EXCEPT 运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。INTERSECT 返回由 INTERSECT 运算符左侧和右侧的查询都返回的所有非重复值。使用 EXCEPT 或 INTERSECT 比较的结果集必须具有相同的结构。它们的列数必须相同，并且相应的结果集列的数据类型必须兼容。</p>
            <p>MSDN上的例子能说明问题：</p>
            <p>
            <table style="background-color: #cccccc" cellspacing="0" cellpadding="0" width="100%" border="1">
                <tbody>
                    <tr>
                        <th>TableA (col1 int)</th>
                        <th>TableB (col1 int)</th>
                        <th>TableC (col1 int)</th>
                    </tr>
                    <tr>
                        <td>
                        <p>NULL</p>
                        </td>
                        <td>
                        <p>NULL</p>
                        </td>
                        <td>
                        <p>2</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <p>NULL</p>
                        </td>
                        <td>
                        <p>1</p>
                        </td>
                        <td>
                        <p>2</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <p>NULL</p>
                        </td>
                        <td>
                        <p>3</p>
                        </td>
                        <td>
                        <p>2</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <p>1</p>
                        </td>
                        <td>
                        <p>4</p>
                        </td>
                        <td>
                        <p>4</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <p>2</p>
                        </td>
                        <td>
                        <p>4</p>
                        </td>
                        <td>
                        <p>4</p>
                        </td>
                    </tr>
                    <tr>
                        <td>
                        <p>2</p>
                        </td>
                        <td> </td>
                        <td> </td>
                    </tr>
                    <tr>
                        <td>
                        <p>2</p>
                        </td>
                        <td> </td>
                        <td> </td>
                    </tr>
                    <tr>
                        <td>
                        <p>3</p>
                        </td>
                        <td> </td>
                        <td> </td>
                    </tr>
                    <tr>
                        <td>
                        <p>4</p>
                        </td>
                        <td> </td>
                        <td> </td>
                    </tr>
                    <tr>
                        <td>
                        <p>4</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </p>
            <p>使用 EXCEPT，以下查询将返回由 EXCEPT 操作数左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。</p>
            <p><br>
            SELECT * FROM TableA EXCEPT SELECT * FROM TableB<br>
            结果如下：</p>
            <p>Col1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
            ----------- <br>
            2</p>
            <p>(1 row(s) affected)<br>
            使用 INTERSECT，此查询将返回由 INTERSECT 运算符左侧和右侧的查询都返回的所有非重复值。</p>
            <p><br>
            SELECT * FROM TableA INTERSECT SELECT * FROM TableB<br>
            结果如下：</p>
            <p><br>
            Col1-----------NULL134(4 row(s) affected)<br>
            INTERSECT 运算符优先于 EXCEPT。例如，以下查询使用了这两个运算符：</p>
            <p><br>
            SELECT * FROM TableA EXCEPT SELECT * FROM TableB INTERSECT SELECT * FROM TableC<br>
            结果如下：</p>
            <p>Col1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
            ----------- <br>
            NULL<br>
            1<br>
            2<br>
            3</p>
            <p>(4 row(s) affected)</p>
            </div>
            </td>
        </tr>
    </tbody>
</table> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/e9b76227e063a705908f9d3a.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-14  09:25</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/e9b76227e063a705908f9d3a.html</guid>
</item>

<item>
        <title><![CDATA[使用COMPUTE和COMPUTE BY对数据进行汇总]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/5aa5203f6cbc2bea55e72339.html]]></link>
        <description><![CDATA[
		
		COMPUTE子句使用聚合函数生成数据的汇总值。COMPUTE和COMPUTE BY子句之间的区别在于COMPUTE不仅显示汇总的信息，还显示详细信息。生成的汇总值显示为另一行。这样在同一结果集就可以同时看到详细信息行与汇总行。COMPUTE支持使用聚合函数AVG、COUNT、MIN、MAX和SUM。<br>
&nbsp;&nbsp;&nbsp;  语法:Select 列名1，列名2……列名n from 表名<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  order by列名1 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  compute [by] 函数名（列名2）<br>
 实例:<br>
 a、 Use pubs<br>
&nbsp;&nbsp;&nbsp;&nbsp;  select type,price from titles <br>
&nbsp;&nbsp;&nbsp;&nbsp;  order by type <br>
&nbsp;&nbsp;&nbsp;&nbsp;  compute avg(price)<br>
 b、select type,advance from titles where type='business' or type='trad_cook'<br>
&nbsp;&nbsp;&nbsp;  order by type<br>
&nbsp;&nbsp;&nbsp;  compute sum(advance) by type<br>
注意:<br>
a)不允许DISTINCT关键字与行聚合函数一起使用。<br>
b)COMPUTE子句中使用的列名必须出现在语句的选择列表中。<br>
c)同一个语句中不能同时出现SELECT INTO和COMPUTE子句，这是因为包含COMPUTE的语句是以另一<br>
  个结构生成行。<br>
d)如果使用COMPUTE BY，就必须同时使用ORDER BY子句。列于COMPUTE BY后的列必须等同于<br>
  ORDER BY 后出现的列或是ORDER BY 后的子集。它们必须具有相同的从左到右的顺序，从同一<br>
  个表达式开始，并且不能跳过任何表达式。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/5aa5203f6cbc2bea55e72339.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-14  09:24</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/5aa5203f6cbc2bea55e72339.html</guid>
</item>

<item>
        <title><![CDATA[sql server 中的as when then 多重选择]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/3a26b3b716035cf230add128.html]]></link>
        <description><![CDATA[
		
		declare @m tinyint,@time smalldatetime<br>
select @m=month(getdate())<br>
select @m=case when @m between 1 and 3 then 1<br>
when @m between 4 and 6 then 4<br>
when @m between 7 and 9 then 7<br>
else 10 end<br>
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01' <br>
select datediff(day,@time,dateadd(mm,3,@time)) as daysNum 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/%CA%FD%BE%DD%BF%E2%28sql%20server%202000%BA%CD2005%29">数据库(sql server 2000和2005)</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/3a26b3b716035cf230add128.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-14  08:54</pubDate>
        <category><![CDATA[数据库(sql server 2000和2005)]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/3a26b3b716035cf230add128.html</guid>
</item>

<item>
        <title><![CDATA[javascript 操作cookie类]]></title>
        <link><![CDATA[http://hi.baidu.com/educast/blog/item/d72b8d547909bd193b2935f6.html]]></link>
        <description><![CDATA[
		
		<font color="#008080">1</font> <span style="color: #000000">String.prototype.Trim </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">()<br>
</span><span style="color: #008080"> 2</span> <span style="color: #000000">{<br>
</span><span style="color: #008080"> 3</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.replace(</span><span style="color: #000000">/</span><span style="color: #000000">^\s+</span><span style="color: #000000">/</span><span style="color: #000000">g,</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">).replace(</span><span style="color: #000000">/</span><span style="color: #000000">\s+$</span><span style="color: #000000">/</span><span style="color: #000000">g,</span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">);<br>
</span><span style="color: #008080"> 4</span> <span style="color: #000000">}<br>
</span><span style="color: #008080"> 5</span> <span style="color: #000000"><br>
</span><span style="color: #008080"> 6</span> <span style="color: #0000ff">function</span><span style="color: #000000"> JSCookie()<br>
</span><span style="color: #008080"> 7</span> <span style="color: #000000">{<br>
</span><span style="color: #008080"> 8</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.GetCookie </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">(key)<br>
</span><span style="color: #008080"> 9</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">10</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> cookie </span><span style="color: #000000">=</span><span style="color: #000000"> document.cookie;<br>
</span><span style="color: #008080">11</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> cookieArray </span><span style="color: #000000">=</span><span style="color: #000000"> cookie.split(</span><span style="color: #000000">'</span><span style="color: #000000">;</span><span style="color: #000000">'</span><span style="color: #000000">);<br>
</span><span style="color: #008080">12</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> getvalue </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">13</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">cookieArray.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br>
</span><span style="color: #008080">14</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">15</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
</span><span style="color: #008080">16</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(cookieArray[i].Trim().substr(</span><span style="color: #000000">0</span><span style="color: #000000">,key.length) </span><span style="color: #000000">==</span><span style="color: #000000"> key)<br>
</span><span style="color: #008080">17</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">18</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getvalue </span><span style="color: #000000">=</span><span style="color: #000000"> cookieArray[i].Trim().substr(key.length </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">);<br>
</span><span style="color: #008080">19</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br>
</span><span style="color: #008080">20</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: #008080">21</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: #008080">22</span> <span style="color: #000000"><br>
</span><span style="color: #008080">23</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"> getvalue;<br>
</span><span style="color: #008080">24</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; };<br>
</span><span style="color: #008080">25</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.GetChild </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">(cookiekey,childkey)<br>
</span><span style="color: #008080">26</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">27</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> child </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">this</span><span style="color: #000000">.GetCookie(cookiekey);<br>
</span><span style="color: #008080">28</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> childs </span><span style="color: #000000">=</span><span style="color: #000000"> child.split(</span><span style="color: #000000">'</span><span style="color: #000000">&amp;</span><span style="color: #000000">'</span><span style="color: #000000">);<br>
</span><span style="color: #008080">29</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> getvalue </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">30</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
</span><span style="color: #008080">31</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;i </span><span style="color: #000000">&lt;</span><span style="color: #000000"> childs.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br>
</span><span style="color: #008080">32</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">33</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(childs[i].Trim().substr(</span><span style="color: #000000">0</span><span style="color: #000000">,childkey.length) </span><span style="color: #000000">==</span><span style="color: #000000"> childkey)<br>
</span><span style="color: #008080">34</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">35</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; getvalue </span><span style="color: #000000">=</span><span style="color: #000000"> childs[i].Trim().substr(childkey.length </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">);<br>
</span><span style="color: #008080">36</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br>
</span><span style="color: #008080">37</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: #008080">38</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: #008080">39</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000"> getvalue;<br>
</span><span style="color: #008080">40</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; };<br>
</span><span style="color: #008080">41</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.SetCookie </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">(key,value,expire,domain,path)<br>
</span><span style="color: #008080">42</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">43</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> cookie </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">44</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(key </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000"> value </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br>
</span><span style="color: #008080">45</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie </span><span style="color: #000000">+=</span><span style="color: #000000"> key </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">=</span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> value </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">;</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">46</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(expire </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br>
</span><span style="color: #008080">47</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie </span><span style="color: #000000">+=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">expires=</span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> expire.toGMTString() </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">;</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">48</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(domain </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br>
</span><span style="color: #008080">49</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie </span><span style="color: #000000">+=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">domain=</span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> domain </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">;</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">50</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(path </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">)<br>
</span><span style="color: #008080">51</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie </span><span style="color: #000000">+=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">path=</span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> path </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">;</span><span style="color: #000000">&quot;</span><span style="color: #000000">;<br>
</span><span style="color: #008080">52</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.cookie </span><span style="color: #000000">=</span><span style="color: #000000"> cookie;<br>
</span><span style="color: #008080">53</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; };<br>
</span><span style="color: #008080">54</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Expire </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">function</span><span style="color: #000000">(key)<br>
</span><span style="color: #008080">55</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; {<br>
</span><span style="color: #008080">56</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expire_time </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Date();<br>
</span><span style="color: #008080">57</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expire_time.setFullYear(expire_time.getFullYear() </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">);<br>
</span><span style="color: #008080">58</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000"> cookie </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> key </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">=e;expires=</span><span style="color: #000000">&quot;</span><span style="color: #000000"> </span><span style="color: #000000">+</span><span style="color: #000000"> expire_time </span><span style="color: #000000">+</span><span style="color: #000000"> </span><span style="color: #000000">&quot;</span><span style="color: #000000">;</span><span style="color: #000000">&quot;</span><span style="color: #000000"><br>
</span><span style="color: #008080">59</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.cookie </span><span style="color: #000000">=</span><span style="color: #000000"> cookie;<br>
</span><span style="color: #008080">60</span> <span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp; }<br>
</span><span style="color: #008080">61</span> <span style="color: #000000">}<br>
<br>
<br>
用法：<br>
<strong>一、设置cookie</strong><br>
var cookie = new JSCookie();<br>
//普通设置<br>
cookie .SetCookie(&quot;key1&quot;,&quot;val1&quot;);<br>
<br>
//过期时间为一年<br>
var expire_time = new Date();<br>
expire_time.setFullYear(expire_time.getFullYear() + 1);<br>
cookie .SetCookie(&quot;key2&quot;,&quot;val2&quot;,expire_time);<br>
<br>
//设置域及路径，带过期时间<br>
cookie .SetCookie(&quot;key3&quot;,&quot;val3&quot;,expire_time,&quot;.cnblogs.com&quot;,&quot;/&quot;);<br>
<br>
//设置带子键的cookie,子键分别是k1,k2,k3<br>
cookie .SetCookie(&quot;key4&quot;,&quot;k1=1&amp;k2=2&amp;k3=3&quot;);<br>
<br>
<strong>二、读取cookie</strong><br>
//简单获取<br>
cookie .GetCookie(&quot;key1&quot;);<br>
cookie .GetCookie(&quot;key2&quot;);<br>
cookie .GetCookie(&quot;key3&quot;);<br>
cookie .GetCookie(&quot;key4&quot;);<br>
//获取key4的子键k1值<br>
cookie .GetChild(&quot;key4&quot;,&quot;k1&quot;);<br>
<br>
<strong>三、删除</strong><br>
cookie .Expire(&quot;key1&quot;);<br>
cookie .Expire(&quot;key2&quot;);<br>
cookie .Expire(&quot;key3&quot;);<br>
cookie .Expire(&quot;key4&quot;);</span> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/educast/blog/category/Javascript">Javascript</a>&nbsp;<a href="http://hi.baidu.com/educast/blog/item/d72b8d547909bd193b2935f6.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-13  09:11</pubDate>
        <category><![CDATA[Javascript]]></category>
        <author><![CDATA[educast]]></author>
		<guid>http://hi.baidu.com/educast/blog/item/d72b8d547909bd193b2935f6.html</guid>
</item>


</channel>
</rss>