<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[天空编程接口]]></title>
  <subtitle type="html"><![CDATA[漏洞与补丁齐飞，蓝屏共死机一色！]]></subtitle>
  <id>http://www.SkyAPI.Com/V1/</id>
  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.SkyAPI.Com/V1/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.8">PJBlog3</generator> 
  <updated>2008-09-08T10:16:00+08:00</updated>

  <entry>
	  <title type="html"><![CDATA[C# 给图片加上水印文字]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=5" label="编程浅谈" /> 
	  <updated>2008-09-08T10:16:00+08:00</updated>
	  <published>2008-09-08T10:16:00+08:00</published>
		  <summary type="html"><![CDATA[<p>用此方法可以直接给指定图片添加水印文字，如果文字太长，使用 \n 则可以实现水印文字同样换行的效果<img alt="" src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/12.gif" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="comment">///&nbsp;&lt;summary&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span><span class="comment">///&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="comment">///&nbsp;&lt;/summary&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span><span class="comment">///&nbsp;&lt;param&nbsp;name=&quot;sIn&quot;&gt;input&nbsp;jpg&lt;/param&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="comment">///&nbsp;&lt;param&nbsp;name=&quot;sOut&quot;&gt;output&nbsp;jpg&lt;/param&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span><span class="comment">///&nbsp;&lt;param&nbsp;name=&quot;msg&quot;&gt;message&lt;/param&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;Create(String&nbsp;sIn,&nbsp;String&nbsp;sOut,&nbsp;String&nbsp;msg)&nbsp;&nbsp;</span></span></li>
    <li><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//create&nbsp;a&nbsp;image&nbsp;object&nbsp;containing&nbsp;the&nbsp;photograph&nbsp;to&nbsp;watermark</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;imgPhoto&nbsp;=&nbsp;Image.FromFile(sIn);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>&nbsp;phWidth&nbsp;=&nbsp;imgPhoto.Width;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>&nbsp;phHeight&nbsp;=&nbsp;imgPhoto.Height;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//create&nbsp;a&nbsp;Bitmap&nbsp;the&nbsp;Size&nbsp;of&nbsp;the&nbsp;original&nbsp;photograph</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;bmPhoto&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Bitmap(phWidth,&nbsp;phHeight,&nbsp;PixelFormat.Format24bppRgb);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bmPhoto.SetResolution(imgPhoto.HorizontalResolution,&nbsp;imgPhoto.VerticalResolution);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//load&nbsp;the&nbsp;Bitmap&nbsp;into&nbsp;a&nbsp;Graphics&nbsp;object&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;grPhoto&nbsp;=&nbsp;Graphics.FromImage(bmPhoto);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//------------------------------------------------------------</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Step&nbsp;#1&nbsp;-&nbsp;Insert&nbsp;Copyright&nbsp;message</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//------------------------------------------------------------</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Set&nbsp;the&nbsp;rendering&nbsp;quality&nbsp;for&nbsp;this&nbsp;Graphics&nbsp;object</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grPhoto.SmoothingMode&nbsp;=&nbsp;SmoothingMode.AntiAlias;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Draws&nbsp;the&nbsp;photo&nbsp;Image&nbsp;object&nbsp;at&nbsp;original&nbsp;size&nbsp;to&nbsp;the&nbsp;graphics&nbsp;object.</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grPhoto.DrawImage(&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgPhoto,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;Photo&nbsp;Image&nbsp;object</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;Rectangle(0,&nbsp;0,&nbsp;phWidth,&nbsp;phHeight),&nbsp;</span><span class="comment">//&nbsp;Rectangle&nbsp;structure</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;x-coordinate&nbsp;of&nbsp;the&nbsp;portion&nbsp;of&nbsp;the&nbsp;source&nbsp;image&nbsp;to&nbsp;draw.&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;y-coordinate&nbsp;of&nbsp;the&nbsp;portion&nbsp;of&nbsp;the&nbsp;source&nbsp;image&nbsp;to&nbsp;draw.&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phWidth,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;Width&nbsp;of&nbsp;the&nbsp;portion&nbsp;of&nbsp;the&nbsp;source&nbsp;image&nbsp;to&nbsp;draw.&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;phHeight,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;Height&nbsp;of&nbsp;the&nbsp;portion&nbsp;of&nbsp;the&nbsp;source&nbsp;image&nbsp;to&nbsp;draw.&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GraphicsUnit.Pixel);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;Units&nbsp;of&nbsp;measure&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//-------------------------------------------------------</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//to&nbsp;maximize&nbsp;the&nbsp;size&nbsp;of&nbsp;the&nbsp;Copyright&nbsp;message&nbsp;we&nbsp;will&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//test&nbsp;multiple&nbsp;Font&nbsp;sizes&nbsp;to&nbsp;determine&nbsp;the&nbsp;largest&nbsp;posible&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//font&nbsp;we&nbsp;can&nbsp;use&nbsp;for&nbsp;the&nbsp;width&nbsp;of&nbsp;the&nbsp;Photograph</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//define&nbsp;an&nbsp;array&nbsp;of&nbsp;point&nbsp;sizes&nbsp;you&nbsp;would&nbsp;like&nbsp;to&nbsp;consider&nbsp;as&nbsp;possiblities</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//-------------------------------------------------------</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>[]&nbsp;sizes&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">int</span><span>[]{16,14,12,10,8,6,4};&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Font&nbsp;crFont&nbsp;=&nbsp;<span class="keyword">null</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SizeF&nbsp;crSize&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;SizeF();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Loop&nbsp;through&nbsp;the&nbsp;defined&nbsp;sizes&nbsp;checking&nbsp;the&nbsp;length&nbsp;of&nbsp;the&nbsp;Copyright&nbsp;string</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//If&nbsp;its&nbsp;length&nbsp;in&nbsp;pixles&nbsp;is&nbsp;less&nbsp;then&nbsp;the&nbsp;image&nbsp;width&nbsp;choose&nbsp;this&nbsp;Font&nbsp;size.</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;i=0&nbsp;;i&lt;7;&nbsp;i++)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//set&nbsp;a&nbsp;Font&nbsp;object&nbsp;to&nbsp;Arial&nbsp;(i)pt,&nbsp;Bold</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crFont&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Font(</span><span class="string">&quot;arial&quot;</span><span>,&nbsp;sizes[i],&nbsp;FontStyle.Bold);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Measure&nbsp;the&nbsp;Copyright&nbsp;string&nbsp;in&nbsp;this&nbsp;Font</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crSize&nbsp;=&nbsp;grPhoto.MeasureString(msg,&nbsp;crFont);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>((</span><span class="keyword">ushort</span><span>)crSize.Width&nbsp;&lt;&nbsp;(</span><span class="keyword">ushort</span><span>)phWidth&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;(<span class="keyword">ushort</span><span>)crSize.Height&nbsp;&lt;&nbsp;(</span><span class="keyword">ushort</span><span>)phHeight&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Since&nbsp;all&nbsp;photographs&nbsp;will&nbsp;have&nbsp;varying&nbsp;heights,&nbsp;determine&nbsp;a&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//position&nbsp;5%&nbsp;from&nbsp;the&nbsp;bottom&nbsp;of&nbsp;the&nbsp;image</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">int</span><span>&nbsp;yPixlesFromBottom&nbsp;=&nbsp;(</span><span class="keyword">int</span><span>)(phHeight&nbsp;*.05);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Now&nbsp;that&nbsp;we&nbsp;have&nbsp;a&nbsp;point&nbsp;size&nbsp;use&nbsp;the&nbsp;Copyrights&nbsp;string&nbsp;height&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//to&nbsp;determine&nbsp;a&nbsp;y-coordinate&nbsp;to&nbsp;draw&nbsp;the&nbsp;string&nbsp;of&nbsp;the&nbsp;photograph</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">float</span><span>&nbsp;yPosFromBottom&nbsp;=&nbsp;(phHeight&nbsp;-&nbsp;yPixlesFromBottom-crSize.Height);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Determine&nbsp;its&nbsp;x-coordinate&nbsp;by&nbsp;calculating&nbsp;the&nbsp;center&nbsp;of&nbsp;the&nbsp;width&nbsp;of&nbsp;the&nbsp;image</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">float</span><span>&nbsp;xCenterOfImg&nbsp;=&nbsp;(phWidth/2);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Define&nbsp;the&nbsp;text&nbsp;layout&nbsp;by&nbsp;setting&nbsp;the&nbsp;text&nbsp;alignment&nbsp;to&nbsp;centered</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringFormat&nbsp;StrFormat&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;StringFormat();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrFormat.Alignment&nbsp;=&nbsp;StringAlignment.Center;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//define&nbsp;a&nbsp;Brush&nbsp;which&nbsp;is&nbsp;semi&nbsp;trasparent&nbsp;black&nbsp;(Alpha&nbsp;set&nbsp;to&nbsp;153)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SolidBrush&nbsp;semiTransBrush2&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;SolidBrush(Color.FromArgb(153,&nbsp;0,&nbsp;0,&nbsp;0));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Draw&nbsp;the&nbsp;Copyright&nbsp;string</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grPhoto.DrawString(msg,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//string&nbsp;of&nbsp;text</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crFont,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//font</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;semiTransBrush2,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Brush</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;PointF(xCenterOfImg+1,yPosFromBottom+1),&nbsp;&nbsp;</span><span class="comment">//Position</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrFormat);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//define&nbsp;a&nbsp;Brush&nbsp;which&nbsp;is&nbsp;semi&nbsp;trasparent&nbsp;white&nbsp;(Alpha&nbsp;set&nbsp;to&nbsp;153)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SolidBrush&nbsp;semiTransBrush&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;SolidBrush(Color.FromArgb(153,&nbsp;255,&nbsp;255,&nbsp;255));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Draw&nbsp;the&nbsp;Copyright&nbsp;string&nbsp;a&nbsp;second&nbsp;time&nbsp;to&nbsp;create&nbsp;a&nbsp;shadow&nbsp;effect</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Make&nbsp;sure&nbsp;to&nbsp;move&nbsp;this&nbsp;text&nbsp;1&nbsp;pixel&nbsp;to&nbsp;the&nbsp;right&nbsp;and&nbsp;down&nbsp;1&nbsp;pixel</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grPhoto.DrawString(msg,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//string&nbsp;of&nbsp;text</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;crFont,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//font</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;semiTransBrush,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Brush</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">new</span><span>&nbsp;PointF(xCenterOfImg,yPosFromBottom),&nbsp;&nbsp;</span><span class="comment">//Position</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StrFormat);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Text&nbsp;alignment</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Create&nbsp;a&nbsp;Bitmap&nbsp;based&nbsp;on&nbsp;the&nbsp;previously&nbsp;modified&nbsp;photograph&nbsp;Bitmap</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bitmap&nbsp;bmWatermark&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Bitmap(bmPhoto);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bmWatermark.SetResolution(imgPhoto.HorizontalResolution,&nbsp;imgPhoto.VerticalResolution);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//Load&nbsp;this&nbsp;Bitmap&nbsp;into&nbsp;a&nbsp;new&nbsp;Graphic&nbsp;Object</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Graphics&nbsp;grWatermark&nbsp;=&nbsp;Graphics.FromImage(bmWatermark);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgPhoto&nbsp;=&nbsp;bmWatermark;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grPhoto.Dispose();&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grWatermark.Dispose();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgPhoto.Save(sOut,&nbsp;ImageFormat.Jpeg);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imgPhoto.Dispose();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=220" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=220</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[不得了, google 太强悍了]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=8" label="随地乱吐" /> 
	  <updated>2008-09-01T10:36:23+08:00</updated>
	  <published>2008-09-01T10:36:23+08:00</published>
		  <summary type="html"><![CDATA[<object height="344" width="425">
<param value="http://www.youtube.com/v/1GDl2r0RxpE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;fs=1" name="movie" />
<param value="true" name="allowFullScreen" /><embed height="344" width="425" allowfullscreen="true" type="application/x-shockwave-flash" src="http://www.youtube.com/v/1GDl2r0RxpE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;fs=1"></embed></object>
<p>&nbsp;</p>
<p>这个视频演示的是GOOGLE的手机操作系统Android ，这下iphone有竞争对手了。视频演示了OpenGL ES 2技术所实现的3D桌面</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=219" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=219</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[SkyWiki o&#114; SkyCM 完工]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=6" label="个人精品" /> 
	  <updated>2008-08-27T14:03:04+08:00</updated>
	  <published>2008-08-27T14:03:04+08:00</published>
		  <summary type="html"><![CDATA[<p><img alt="" src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/12.gif" /> 经过几天的奋力，终于搞好了辞典的初步功能，现在投放出来测试。喜欢尝试的朋友可以试试，辞典主页：</p>
<p><a href="http://skycm.skyapi.com" target="_blank">skycm.skyapi.com</a>&nbsp; </p>
<p>来看看软件主界面</p>
<p><img alt="" src="http://lh6.ggpht.com/Space.Q.Li/SLTv57bS8kI/AAAAAAAAAlg/x6MQmZbFd_Y/main.JPG?imgmax=512" /></p>
<p>&nbsp;</p>
<p>辞典软件，当然少不了关键字建议功能</p>
<p><img alt="" src="http://lh3.ggpht.com/Space.Q.Li/SLTv5IEqt4I/AAAAAAAAAlI/V-tyXV2RrA4/sugg.JPG?imgmax=512" /></p>
<p>&nbsp;</p>
<p>给了建议，当然也要看看信息</p>
<p><img alt="" src="http://lh4.ggpht.com/Space.Q.Li/SLTv5j953OI/AAAAAAAAAlY/JoegVpA5O2E/result_1.JPG?imgmax=512" /></p>
<p>下面是来自global-smile 数据</p>
<p><img alt="" src="http://lh5.ggpht.com/Space.Q.Li/SLTv5KnUc-I/AAAAAAAAAlQ/erl92VfJz50/result_2.JPG?imgmax=512" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=218" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=218</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Sky Wiki 里程]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=6" label="个人精品" /> 
	  <updated>2008-08-18T15:13:09+08:00</updated>
	  <published>2008-08-18T15:13:09+08:00</published>
		  <summary type="html"><![CDATA[<p>做了几个星期的辞典，上个星期都已经初步完成，算是个BETA版的，但是苦于界面文字布局问题一直处于拖延状态<img src="http://www.SkyAPI.Com/V1//V1/fckeditor/editor/images/smiley/qq2007/8.gif" alt="" /></p>
<p>现在这个总觉得也不是很好看，惭愧惭愧<img src="http://www.SkyAPI.Com/V1//V1/fckeditor/editor/images/smiley/qq2007/27.gif" alt="" /><img height="371" width="512" src="http://lh4.ggpht.com/Space.Q.Li/SKkeNZgNyFI/AAAAAAAAAko/J4VaXD439Lk/main_2.JPG?imgmax=512" alt="" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=217" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=217</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[天空维基 Wiki]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=6" label="个人精品" /> 
	  <updated>2008-08-06T16:44:06+08:00</updated>
	  <published>2008-08-06T16:44:06+08:00</published>
		  <summary type="html"><![CDATA[<p>之前做了个辞典软件，经过朋友使用后需要做的升级，但是鉴于之前写的代码确实比较落后，而且杂乱无章，只好重新&quot;架构&quot;一个了<img src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/29.gif" alt="" /></p>
<p>该辞典数据分为两个部分</p>
<p><span style="color: rgb(255, 0, 0);">1、 本地索引文件<br type="_moz" />
</span></p>
<p><span style="color: rgb(255, 0, 0);">2、 网络服务器数据</span></p>
<p>词库文件很多，近<span style="color: rgb(0, 0, 255);">50本辞典</span><img src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/13.gif" alt="" />&nbsp; 都是用的别人的词库文件，当然少不了<span style="color: rgb(153, 51, 0);">金山</span>的词库了。这个辞典我打算不自己做词库提供给人们下载，我把词库的转换引擎全部集成到辞典软件里面，用户只需要下载我支持的词库文件格式，既可以快速的转换并添加到软件索引文件中。</p>
<p>对于词库支持的文件格式我首先瞄准了&ldquo;星际译王&rdquo;的，这个词库很多地方都可以下载到。以后再慢慢的集成其他词库格式吧</p>
<p>现在说说优势在哪里。</p>
<p>辞典的基本功能就是查询嘛，其他的什么翻译啦都不算什么亮点，用辞典的人就想在辞典里面轻松的找到相关信息，传统的辞典软件只支持关键字查询，比如，你输入一个good，那么只会出现一条good的详细信息，诸如，be good at ... 等词是不会显示的。</p>
<p>新版本的辞典添加了全文索引，而且搜索时候按照字符出现次数按倒序排列。想想GOOGLE的搜索结果吧<img src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/32.gif" alt="" /></p>
<p>正是因为添加了全文索引的功能，所以提高了搜索关键字的效率也同时给用户提供了更多的数据信息，所以取了个名字：<span style="color: rgb(0, 0, 255);"> SkyWiki&nbsp; </span>，<span style="color: rgb(0, 0, 255);">天空维基</span></p>
<p>欣赏一下主界面图吧</p>
<p><img src="http://lh3.ggpht.com/Space.Q.Li/SJlfFWEkPBI/AAAAAAAAAjw/KWKo1LR37MY/skywiki.JPG?imgmax=512" alt="" /></p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=216" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=216</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[C# 封装RSS 2.0]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=6" label="个人精品" /> 
	  <updated>2008-07-30T13:26:49+08:00</updated>
	  <published>2008-07-30T13:26:49+08:00</published>
		  <summary type="html"><![CDATA[<p>在web2.0时代，RSS是一个不可缺少的东西，它的方便和灵活之处这里不多说了，用C#封装了一下RSS2.0 ，使用起来更加方便，很简单，就是四个类， RSSChannel ， RSSItem, RSSImage 是RSS数据类, Generator 是序列化XML文本类</p>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码 RSSChannel</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Collections.Generic;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System.Xml.Serialization;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.IO;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System.Text;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">namespace</span><span>&nbsp;Com.SkyAPI.RSSGenerator&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;RSSChannel&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;RSSChannel()&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;title=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;title&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Title&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;title;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;title&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;link=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;link&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Link&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;link;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;link&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;description=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;description&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Description&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;description;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;description&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;language=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;language&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Language&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;language;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;language&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;copyright=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;copyright&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Copyright&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;copyright;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;copyright&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;webMaster=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;webMaster&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;WebMaster&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;webMaster;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;webMaster&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;generator=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;generator&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Generator&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;generator;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;generator&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;List&lt;RSSItem&gt;&nbsp;item&nbsp;=</span><span class="keyword">new</span><span>&nbsp;List&lt;RSSItem&gt;();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;item&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;List&lt;RSSItem&gt;&nbsp;Item&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;item;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;item&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;RSSImage&nbsp;image;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;image&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;RSSImage&nbsp;Image&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;image;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;image&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码 RSSItem</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Xml.Serialization;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">namespace</span><span>&nbsp;Com.SkyAPI.RSSGenerator&nbsp;&nbsp;</span></span></li>
    <li><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;[XmlType]&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;RSSItem&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;RSSItem()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;link=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;link&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Link&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;link;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;link&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;title=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;title&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Title&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;title;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;title&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;author=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;author&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Author&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;author;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;author&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;category=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;category&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Category&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;category;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;category&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;DateTime&nbsp;pubDate&nbsp;=&nbsp;DateTime.Now;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;pubDate&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;DateTime&nbsp;PubDate&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;pubDate;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;pubDate&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;guid=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;guid&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Guid&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;guid;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;guid&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;description=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;description&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Description&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;description;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;description&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码 RSSImage</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Xml.Serialization;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">namespace</span><span>&nbsp;Com.SkyAPI.RSSGenerator&nbsp;&nbsp;</span></span></li>
    <li><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;[XmlType]&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;RSSImage&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;RSSImage()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;title=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;title&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Title&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;title;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;title&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;url=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;url&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Url&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;url;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;url&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;link=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;link&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Link&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;link;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;link&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;description=</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;description&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">string</span><span>&nbsp;Description&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;description;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;description&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码 Generator</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Xml.Serialization;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System.IO;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Text;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">namespace</span><span>&nbsp;Com.SkyAPI.RSSGenerator&nbsp;&nbsp;</span></span></li>
    <li><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;[XmlRoot(<span class="string">&quot;RSS&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Generator&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;Generator()&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlAttribute(<span class="string">&quot;version&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;String&nbsp;Version&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;2.0&quot;</span><span>;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;RSSChannel&nbsp;channel;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[XmlElement(<span class="string">&quot;channel&quot;</span><span>)]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;RSSChannel&nbsp;Channel&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;channel;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>&nbsp;{&nbsp;channel&nbsp;=&nbsp;value;&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;String&nbsp;ParseXML(RSSChannel&nbsp;channel)&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Generator&nbsp;g&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Generator();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.Channel&nbsp;=&nbsp;channel;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlSerializer&nbsp;s&nbsp;=<span class="keyword">new</span><span>&nbsp;XmlSerializer(</span><span class="keyword">typeof</span><span>(Com.SkyAPI.RSSGenerator.Generator));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringWriter&nbsp;wr&nbsp;=<span class="keyword">new</span><span>&nbsp;StringWriter();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.Serialize(wr,&nbsp;g);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;wr.ToString();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>使用实例代码</p>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.Xml.Serialization;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System.IO;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;Com.SkyAPI.RSSGenerator;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">namespace</span><span>&nbsp;RSSGenerator&nbsp;&nbsp;</span></span></li>
    <li><span>{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">class</span><span>&nbsp;Program&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;Main(</span><span class="keyword">string</span><span>[]&nbsp;args)&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(<span class="string">&quot;Hello&nbsp;World!&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com.SkyAPI.RSSGenerator.RSSImage&nbsp;im&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Com.SkyAPI.RSSGenerator.RSSImage();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.Description&nbsp;=&nbsp;<span class="string">&quot;asdfasdf&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im.Url=<span class="string">&quot;df&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Com.SkyAPI.RSSGenerator.RSSChannel&nbsp;ch&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Com.SkyAPI.RSSGenerator.RSSChannel();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Description=<span class="string">&quot;dest&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Image&nbsp;=&nbsp;im;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RSSItem&nbsp;item&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;RSSItem();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.Author=<span class="string">&quot;li&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.Description=@<span class="string">&quot;dis\~^/&gt;&lt;/?&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Item.Add(item);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Item.Add(item);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch.Item.Add(item);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(Generator.ParseXML(ch));&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(<span class="string">&quot;Press&nbsp;any&nbsp;key&nbsp;to&nbsp;continue&nbsp;.&nbsp;.&nbsp;.&nbsp;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadKey(<span class="keyword">true</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=215" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=215</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Protocol Buffers ]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=5" label="编程浅谈" /> 
	  <updated>2008-07-23T16:29:26+08:00</updated>
	  <published>2008-07-23T16:29:26+08:00</published>
		  <summary type="html"><![CDATA[<p>Google于（7/7/2008）宣布释出数据交换格式─Protocol Buffers原始码，这是Google内部用来加密网络或磁盘上大量数据的技术，Google宣称该格式比XML更胜一筹。<br />
Google自2001年开始开发Protocol Buffers供内部使用，目前释出的是Protocol Buffers 2.0版，Google表示，由于该公司打算释出的许多开放源码计划中有很多都使用了Protocol Buffers功能，因此率先释出Protocol Buffers<br />
<br />
官方地址：<a target="_blank" href="http://code.google.com/p/protobuf/">code.google.com/p/protobuf/</a><br />
<br />
看到此新闻当然心动，马上down代码下来运行，感觉真是不错，全面向对象设计，GOOGLE提供三种语言API： <span style="color: rgb(255, 0, 0);">C++, Java, or Python</span> 。　<br />
<br />
我这里只说ＪＡＶＡ代码，因为其他不太熟悉<br />
<br />
下载源代码后将代码导入到ＩＤＥ中，你会发现有一堆错误，不用急，接着下载ＧＯＯＧＬＥ提供的一个&ldquo;编译器&rdquo;，所谓编译器其实就是ＧＯＯＧＬＥ提供的将自己特定的描述文件转换为ＪＡＶＡ或Ｃ＋＋代码的小工具。名字叫：<span style="color: rgb(255, 0, 0);">protoc.exe</span> <img alt="" src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/13.gif" /><br />
<br />
接着就用 <span style="color: rgb(255, 0, 0);">protoc.exe</span> 编译源文件中的 <span style="color: rgb(128, 128, 0);">descriptor.proto</span><br />
使用方法为<span style="color: rgb(0, 128, 128);"> protoc --java_out=$DST_DIR descriptor.proto&nbsp; </span>，<span style="color: rgb(255, 0, 0);"> $DST_DIR </span>是输出文件目录<br />
<br />
然后将生成文件导入到IDE中，现在你就会发现所有的错误都消失了，接下来的事情就是享受编程的快捷吧<br />
不清楚的可以参考 <br />
<a target="_blank" href="http://code.google.com/apis/protocolbuffers/docs/javatutorial.html">code.google.com/apis/protocolbuffers/docs/javatutorial.html</a><br />
<br />
关于C#的，我也在google上面找到了相关代码，应该是牛人根据google提供的格式些的吧..<br />
[url=http://code.google.com/p/protobuf-net/]http://code.google.com/p/protobuf-net/[/url]<br />
可惜的是我从上面下载的代码有些小错误，应该是还在完善吧，还没正式推出。 实例代码也不多。这里我给一个完整的 C# 2.0 实例代码，此代码生成的文件可以用 google提供的JAVA实例代码读取，反之当然也可以用JAVA代码写，用C#读取。<img alt="" src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/28.gif" />&nbsp;&nbsp; 不过好像有点小问题，就是枚举类型好像读取不出来，还在研究<img alt="" src="http://www.SkyAPI.Com/V1//v1/fckeditor/editor/images/smiley/qq2007/32.gif" /><br />
&nbsp;</p>
<div class="codeText">
<div class="codeHead">C#代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;ProtoBuf.NetExtensions;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;ProtoBuf;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">using</span><span>&nbsp;System.IO;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">using</span><span>&nbsp;System.Collections.Generic;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">namespace</span><span>&nbsp;ProTestA&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;[ProtoContract]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">sealed</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;AddressBooks&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;List&lt;Person&gt;&nbsp;_p;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(1,&nbsp;Name=<span class="string">&quot;person&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">true</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;List&lt;Person&gt;&nbsp;P&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;_p;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{&nbsp;_p=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">enum</span><span>&nbsp;PhoneType&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOBILE,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HOME,&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORK&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;[ProtoContract]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">sealed</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;PhoneNumber&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;number;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(1,&nbsp;Name=<span class="string">&quot;number&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">false</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;String&nbsp;Number&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;number;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{number&nbsp;=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoEnum(Value=2,Name=<span class="string">&quot;type&quot;</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;PhoneType&nbsp;Type;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;[ProtoContract]&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">sealed</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;Person&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;id;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(2,&nbsp;Name=<span class="string">&quot;id&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">false</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">int</span><span>&nbsp;Id&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;id;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{id=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;name;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(1,&nbsp;Name=<span class="string">&quot;name&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">true</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;String&nbsp;Name&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;name;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{name&nbsp;=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;String&nbsp;email;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(3,&nbsp;Name=<span class="string">&quot;email&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">false</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;String&nbsp;Email&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;email;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{email&nbsp;=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;List&lt;PhoneNumber&gt;&nbsp;phone;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[ProtoMember(4,&nbsp;Name=<span class="string">&quot;email&quot;</span><span>,&nbsp;IsRequired=</span><span class="keyword">false</span><span>)]&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;List&lt;PhoneNumber&gt;&nbsp;Phone&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">get</span><span>{</span><span class="keyword">return</span><span>&nbsp;phone;}&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">set</span><span>{phone&nbsp;=&nbsp;value;}&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">class</span><span>&nbsp;Program&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;Main(</span><span class="keyword">string</span><span>[]&nbsp;args)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(<span class="string">&quot;Hello&nbsp;World!&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddressBooks&nbsp;books&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;AddressBooks();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Person&nbsp;p1&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Person();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.Id=1;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.Name=<span class="string">&quot;test1&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.Email=<span class="string">&quot;tset@g.cn&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.Phone&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;List&lt;PhoneNumber&gt;();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PhoneNumber&nbsp;num1=&nbsp;<span class="keyword">new</span><span>&nbsp;PhoneNumber();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num1.Number&nbsp;=&nbsp;<span class="string">&quot;110&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num1.Type&nbsp;=&nbsp;PhoneType.HOME;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.Phone.Add(num1);&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;books.P&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;List&lt;Person&gt;();&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;books.P.Add(p1);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileStream&nbsp;fOut&nbsp;=<span class="keyword">new</span><span>&nbsp;FileStream(@</span><span class="string">&quot;d:\\aa.dat&quot;</span><span>,&nbsp;FileMode.Create);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProtoBuf.Serializer.Serialize&lt;AddressBooks&gt;(fOut&nbsp;,&nbsp;books);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fOut.Flush();&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fOut.Close();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AddressBooks&nbsp;book&nbsp;=&nbsp;ProtoBuf.Serializer.Deserialize&lt;AddressBooks&gt;(<span class="keyword">new</span><span>&nbsp;FileStream(@</span><span class="string">&quot;d:\\aa.dat&quot;</span><span>,&nbsp;FileMode.Open));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;TODO:&nbsp;Implement&nbsp;Functionality&nbsp;Here</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">foreach</span><span>(&nbsp;Person&nbsp;p&nbsp;</span><span class="keyword">in</span><span>&nbsp;book.P&nbsp;)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(<span class="string">&quot;Name:&nbsp;&quot;</span><span>&nbsp;+&nbsp;p.Name);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(<span class="string">&quot;Email:&nbsp;&quot;</span><span>&nbsp;+p.Email);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">foreach</span><span>(PhoneNumber&nbsp;phone&nbsp;</span><span class="keyword">in</span><span>&nbsp;&nbsp;p.Phone)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(phone.Number&nbsp;+&nbsp;<span class="string">&quot;&nbsp;--&gt;&nbsp;&quot;</span><span>&nbsp;+phone.Type.ToString());&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.Write(<span class="string">&quot;Press&nbsp;any&nbsp;key&nbsp;to&nbsp;continue&nbsp;.&nbsp;.&nbsp;.&nbsp;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadKey(<span class="keyword">true</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=214" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=214</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[了解新加坡]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=8" label="随地乱吐" /> 
	  <updated>2008-07-22T09:33:32+08:00</updated>
	  <published>2008-07-22T09:33:32+08:00</published>
		  <summary type="html"><![CDATA[来了新加坡两个多月了，来之前就听说新加坡又名狮城，但还没有仔细问过狮城这个词的来历，今天突然心血来潮了解了解 <img src="http://www.SkyAPI.Com/V1/images/smilies/Face_02.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/><br/><br/>很久以前，新加坡原地名为淡马锡，也就是水镇的意思。后来，有一个来自印尼苏门答腊的王子航海经过淡马锡，误认一只老虎为狮子，就将淡马锡改名为新加坡，在印度语（当时，东南亚一带信号奉印度教）中，新加坡的意思是狮城。<br/><br/><img src="http://lh6.ggpht.com/Space.Q.Li/SGojCk9Rb4I/AAAAAAAAAKQ/1qkgRfF0gWs/DSCF4447.JPG?imgmax=512" border="0" alt=""/><br/><br/>新加坡是一个热带岛国，面积682平方公里，位于赤道以北 136.8公里，东经 103° 38′至东经104°6′，北纬 1°09′至 1°29′。由一个本岛和63个小岛组成。新加坡本岛由东到西约42公里，由南到北约23公里，包括所有大小岛屿在内，总面积为682平方公里。本岛以外的其余岛屿，较大的有德光岛（24.4平方公里），乌敏岛（10.2平方公里）和圣淘沙岛（3.5平方公里）。新加坡地处热带，相对来说，常年气温变化不大，雨量充足，空气湿度高，气候温暖而潮湿，年平均温度在 23和 31摄氏度之间，温差很小。因此，对于那些喜爱日光浴、游泳、航海以及其他水上运动的人来说，新加坡可称得上是天堂。我听很多人说，成都是一个来了就不想走的城市，因为成都是休闲娱乐的圣地，相信新加坡也是一个来了就不想走的城市，仅仅就气候和风景就可谓是圣地.....]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=213" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=213</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Sky MVC framework for dotnet 2.0]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=6" label="个人精品" /> 
	  <updated>2008-07-21T21:42:51+08:00</updated>
	  <published>2008-07-21T21:42:51+08:00</published>
		  <summary type="html"><![CDATA[写程序也有两三年了，也接触过很多WEB开发框架，都是基于MVC结构的，各有千秋。自己花时间写了一个WEB框架玩，<span style="color:Orange">纯属娱乐</span>。紧供大家学习而已。<br/><br/>此框架实现基本的MVC模式，业务代码与视图分离。另外增加权限控制功能。<br/><br/><img src="http://www.SkyAPI.Com/V1/images/download.gif" alt="只允许会员下载" style="margin:0px 2px -4px 0px"/> 该文件只允许会员下载! <a href="http://www.SkyAPI.Com/V1/login.asp">登录</a> | <a href="http://www.SkyAPI.Com/V1/register.asp">注册</a><br/><br/>web.config 设置 for log4net<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.SkyAPI.Com/V1/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&nbsp;&nbsp;&nbsp;&nbsp;&lt;configSections&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;section name=&#34;log4net&#34; type=&#34;log4net.Config.Log4NetConfigurationSectionHandler, log4net&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/configSections&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;log4net&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appender name=&#34;LogInfo&#34; type=&#34;log4net.Appender.RollingFileAppender&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;File&#34; value=&#34;log\\&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;AppendToFile&#34; value=&#34;true&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;DatePattern&#34; value=&#34;yyyyMMdd&#39;.log&#39;&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;MaxSizeRollBackups&#34; value=&#34;100&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;StaticLogFileName&#34; value=&#34;false&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;RollingStyle&#34; value=&#34;Date&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;layout type=&#34;log4net.Layout.PatternLayout&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;ConversionPattern&#34; value=&#34;%d %-5p %c[%L] - %m%n&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/layout&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter type=&#34;log4net.Filter.LevelRangeFilter&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;LevelMin&#34; value=&#34;DEBUG&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param name=&#34;LevelMax&#34; value=&#34;ERROR&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/appender&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;root&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;level value=&#34;ALL&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;appender-ref ref=&#34;LogInfo&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/root&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/log4net&gt;<br/></div></div><br/>web.config 设置 for MVC<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.SkyAPI.Com/V1/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent">&nbsp;&nbsp;&nbsp;&nbsp;&lt;appSettings&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add key=&#34;SkyWeb&#34; value=&#34;SkyWeb.config&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/appSettings&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;system.web&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;httpHandlers&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add verb=&#34;*&#34; path=&#34;*Action.aspx&#34; type=&#34;Com.SkyAPI.MVC.Handler.ActionHandler, MVC.Controller&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/httpHandlers&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;httpModules&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;add name=&#34;actionModel&#34; type=&#34;Com.SkyAPI.MVC.Model.ActionModel, MVC.Controller&#34;/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/httpModules&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;compilation debug=&#34;true&#34;/&gt;<br/>&lt;/system.web&gt;<br/></div></div><br/>SkyWeb.config 设置<br/>1. &lt;security&gt; 列表出所有需要权限检查的文件后缀名(一般都是*.aspx)<br/>2. <span style="color:Red">&lt;virtualpath&gt;/TestWeb&lt;/virtualpath&gt; </span>这个必须注意，正确设置web项目的虚拟路径，在VS2005中调试的时候必须指定web项目名。发布后根据虚拟目录名来更改，如果是在网站根目录则留空，不要输入任何字符<br/>3. &lt;action url=&#34;/LoginAction.aspx&#34; type=&#34;GS.Login,GS&#34;&gt;&lt;/action&gt; URL和类的映射（懂Struts的朋友都明白是什么意思吧） ，url 指定需要映射的url地址，type 指定业务逻辑处理类。<span style="color:Red">注意，如果此类是独立的一个DLL里面，需要指定DLL的程序集名称</span>4. &lt;rolelist&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;role&gt;user&lt;/role&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rolelist&gt;<br/>&nbsp;&nbsp; 列表出当前URL，只能是什么角色的用户才可以访问，不列表任何角色表示不做任何限制<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.SkyAPI.Com/V1/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34; ?&gt;<br/>&lt;SkyWeb&gt;<br/>&nbsp;&nbsp;&lt;!--权限控制--&gt;<br/>&nbsp;&nbsp;&lt;security&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter&gt;*.aspx&lt;/filter&gt;<br/>&nbsp;&nbsp;&lt;/security&gt;<br/>&nbsp;&nbsp;&lt;!--定义程序虚拟目录--&gt;<br/>&nbsp;&nbsp;&lt;!--&lt;virtualpath&gt;/TestWeb&lt;/virtualpath&gt;--&gt;<br/>&nbsp;&nbsp;&lt;virtualpath&gt;/TestWeb&lt;/virtualpath&gt;<br/>&nbsp;&nbsp;&lt;!--URL地址映射--&gt;<br/>&nbsp;&nbsp;&lt;action url=&#34;/LoginAction.aspx&#34; type=&#34;GS.Login,GS&#34;&gt;<br/>&nbsp;&nbsp;&lt;/action&gt;<br/><br/>&nbsp;&nbsp;&lt;action url=&#34;/DisplayUserAction.aspx&#34; type=&#34;GS.DisplayUser,GS&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;rolelist&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;role&gt;user&lt;/role&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/rolelist&gt;<br/>&nbsp;&nbsp;&lt;/action&gt;<br/><br/>&lt;/SkyWeb&gt;<br/></div></div><br/><br/>Controller 类 <br/>1. 类文件必须实现 <span style="color:Red">Com.SkyAPI.MVC.Controller.IController</span> 接口<br/>2. Performed 此函数内处理逻辑代码<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.SkyAPI.Com/V1/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>using Com.SkyAPI.MVC.Controller;<br/>using Com.SkyAPI.MVC.Container;<br/>using Com.SkyAPI.MVC;<br/>namespace GS<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;public class Login:IController<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String Performed(HttpRequest req, HttpResponse res, IContainer container)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String user = req.QueryString[&#34;user&#34;].Trim();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String pwd = req.QueryString[&#34;pwd&#34;].Trim();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.ViewData[&#34;user&#34;] = &#34;ViewData --&gt; &#34; + user;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.ViewData[&#34;pwd&#34;] = &#34;ViewData --&gt; &#34; + pwd;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.SessionData[&#34;user&#34;] = &#34;Session --&gt; &#34; + user;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;container.SessionData[&#34;pwd&#34;] = &#34;Session --&gt; &#34; + pwd;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Security.Role = &#34;User&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#34;/LoginResult.aspx&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/></div></div><br/><br/>Page类<br/>1. Page 类必须继承 <span style="color:Red">Com.SkyAPI.MVC.View.PageView</span><br/>2. ContainerData 接口有三个属性<span style="color:Red">SessionData </span>基于Session 的数据 , <span style="color:Red">ViewData </span>基于request的数据, <span style="color:Red">AppData </span>基于程序级的数据，所有用户共用。<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.SkyAPI.Com/V1/images/code.gif" style="margin:0px 2px -3px 0px" alt="程序代码"/> 程序代码</div><div class="UBBContent"><br/>public partial class DisplayUser : Com.SkyAPI.MVC.View.PageView<br/>{<br/>&nbsp;&nbsp;&nbsp;&nbsp;protected void Page_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/>-------------------aspx--------------------<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank" rel="external">http://www.w3.org/1999/xhtml</a>&#34; &gt;<br/>&lt;head runat=&#34;server&#34;&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Dispay&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;body&gt;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;your login name is:&nbsp;&nbsp;&lt;%=ContainerData.SessionData[&#34;user&#34;].ToString() %&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;br /&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;your password is:&nbsp;&nbsp;&lt;%=ContainerData.SessionData[&#34;pwd&#34;].ToString()%&gt; <br/><br/><br/>&lt;/body&gt;<br/>&lt;/html&gt;<br/></div></div>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=212" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=212</id>
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[“笑话”也会成为非法信息]]></title>
	  <author>
		 <name>SkyAPI</name>
		 <uri>http://www.SkyAPI.Com/V1/</uri>
		 <email>Space.Q.Li@Gmail.Com</email>
	  </author>
	  <category term="" scheme="http://www.SkyAPI.Com/V1/default.asp?cateID=7" label="人生苦恼" /> 
	  <updated>2008-07-21T17:49:45+08:00</updated>
	  <published>2008-07-21T17:49:45+08:00</published>
		  <summary type="html"><![CDATA[今天心情很不爽，居然BLOG被服务商关闭了，给我的理由是：“我们接到上海网络监管消息，说您的网站有非法信息。.............” 然后给我说什么是非法信息。答案是：“关于地震的笑话”。<br/><br/>就是网络上流传了一时的笑话，我看上去很经典，就收录了，天知道那些拿人民血汗钱不做事的大爷们，说这个是非法信息。<br/><br/>真不知道那些人是做什么的，一个小小的BLOG系统，发布了两个笑话，就遭关闭。 <img src="http://www.SkyAPI.Com/V1/images/smilies/Face_07.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/><br/><br/>我知道了为什么税收那么高了，就是因为部门请太多人，无聊，为了表现自己做了工作，随便提个BLOG就说有非法信息，这样一来可以证明自己上班没偷懒，二来呢表现自己多工作多么负责。 <img src="http://www.SkyAPI.Com/V1/images/smilies/Face_49.gif" border="0" style="margin:0px 0px -2px 0px" alt=""/><br/><br/>越想越起火，我终于明白了为什么那么多人到了国外就不想回去了，不是因为不爱国，确实是............. <br/>看来我在新加坡也是不是该考虑考虑.......... 哎～！ 穷苦老百姓呀.............]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.SkyAPI.Com/V1/article.asp?id=210" /> 
	  <id>http://www.SkyAPI.Com/V1/default.asp?id=210</id>
  </entry>	
		
</feed>
