<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://aspadvice.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Steven Swafford: Overworked and Underpaid : XML</title><link>http://aspadvice.com/blogs/sswafford/archive/tags/XML/default.aspx</link><description>Tags: XML</description><dc:language>en</dc:language><generator>CommunityServer 2.1 (Build: 60809.935)</generator><item><title>How to use a MemoryStream to Perform Downloads and Bypass the File System and the Problems Between Browsers and Servers</title><link>http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx</link><pubDate>Thu, 21 Sep 2006 12:29:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:22710</guid><dc:creator>sswafford</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/sswafford/comments/22710.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/sswafford/commentrss.aspx?PostID=22710</wfw:commentRss><description>&lt;p&gt;I was recently was tasked to develop a solution to download data from an Oracle database and allow the client to save the data as an XML document without the use of the file system. I turned to the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.aspx" title="System.IO Namespace"&gt;&lt;span&gt;System.IO &lt;span&gt;Namespace&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; to accomplish this specifically using the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.memorystream.aspx" title="MemoryStream Class"&gt;&lt;span&gt;&lt;span&gt;MemoryStream&lt;/span&gt; Class&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. First I will demonstrate how I accomplished this task and keep in mind that I am us&lt;span&gt;ing&lt;/span&gt; a &lt;span&gt;DataAccess&lt;/span&gt; Layer (DAL) for communication to the database.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span&gt;DAL &lt;span&gt;ExtractData&lt;/span&gt; Class&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&lt;span&gt;/// Exports the &lt;span&gt;admin&lt;/span&gt; extract.&lt;/span&gt;&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;span&gt;/// &amp;lt;&lt;span&gt;param&lt;/span&gt; name=&amp;quot;&lt;span&gt;tableName&lt;/span&gt;&amp;quot;&amp;gt;Name of the table to extract.&amp;lt;/&lt;span&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;/// &amp;lt;&lt;span&gt;param&lt;/span&gt; name=&amp;quot;&lt;span&gt;dataSetName&lt;/span&gt;&amp;quot;&amp;gt;Name of the dataset to create.&amp;lt;/&lt;span&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&lt;span&gt;public &lt;span&gt;MemoryStream&lt;/span&gt; &lt;span&gt;exportAdminExtract&lt;/span&gt;(str&lt;span&gt;ing&lt;/span&gt; &lt;span&gt;tableName&lt;/span&gt;, str&lt;span&gt;ing&lt;/span&gt; &lt;span&gt;dataSetName&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&lt;span&gt;ing&lt;/span&gt; &lt;span&gt;storedProcedureName&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Oracle.&lt;span&gt;DataAccess&lt;/span&gt;.Client.&lt;span&gt;OracleDataAdapter&lt;/span&gt; &lt;span&gt;da&lt;/span&gt; = new &lt;span&gt;OracleDataAdapter&lt;/span&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;MemoryStream&lt;/span&gt; &lt;span&gt;returnStream&lt;/span&gt; = new &lt;span&gt;MemoryStream&lt;/span&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DataSet &lt;span&gt;extractDataSet&lt;/span&gt; = new DataSet(&lt;span&gt;dataSetName&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; us&lt;span&gt;ing&lt;/span&gt; (Oracle.&lt;span&gt;DataAccess&lt;/span&gt;.Client.&lt;span&gt;OracleConnection&lt;/span&gt; &lt;span&gt;dbConn&lt;/span&gt; = new &lt;span&gt;OracleConnection&lt;/span&gt;(_&lt;span&gt;oraMainConnString&lt;/span&gt;))&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&lt;span&gt;&amp;nbsp;Oracle.&lt;span&gt;DataAccess&lt;/span&gt;.Client.&lt;span&gt;OracleCommand&lt;/span&gt; &lt;span&gt;cmd&lt;/span&gt; = new Oracle.&lt;span&gt;DataAccess&lt;/span&gt;.Client.&lt;span&gt;OracleCommand&lt;/span&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;cmd&lt;/span&gt;.Connection = &lt;span&gt;dbConn&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;cmd&lt;/span&gt;.&lt;span&gt;CommandText&lt;/span&gt; = &lt;span&gt;storedProcedureName&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;cmd&lt;/span&gt;.&lt;span&gt;CommandType&lt;/span&gt; = &lt;span&gt;CommandType&lt;/span&gt;.&lt;span&gt;StoredProcedure&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;Oracle.&lt;span&gt;DataAccess&lt;/span&gt;.Client.&lt;span&gt;OracleParameter&lt;/span&gt; &lt;span&gt;paramExtractCursor&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = new &lt;span&gt;OracleParameter&lt;/span&gt;(&amp;quot;&lt;span&gt;extractsCursor&lt;/span&gt;&amp;quot;, &lt;span&gt;OracleDbType&lt;/span&gt;.&lt;span&gt;RefCursor&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;paramExtractCursor&lt;/span&gt;.Direction = &lt;span&gt;ParameterDirection&lt;/span&gt;.Output;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&lt;span&gt;cmd&lt;/span&gt;.Parameters.Add(&lt;span&gt;paramExtractCursor&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;dbConn&lt;/span&gt;.Open();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;da&lt;/span&gt;.&lt;span&gt;SelectCommand&lt;/span&gt; = &lt;span&gt;cmd&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;da&lt;/span&gt;.Fill(&lt;span&gt;extractDataSet&lt;/span&gt;, &lt;span&gt;tableName&lt;/span&gt;.&lt;span&gt;ToUpper&lt;/span&gt;());&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;extractDataSet&lt;/span&gt;.&lt;span&gt;WriteXml&lt;/span&gt;(&lt;span&gt;returnStream&lt;/span&gt;, &lt;span&gt;XmlWriteMode&lt;/span&gt;.&lt;span&gt;WriteSchema&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;catch (Exception ex)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;bool&lt;/span&gt; &lt;span&gt;rethrow&lt;/span&gt; = &lt;span&gt;ExceptionPolicy&lt;/span&gt;.&lt;span&gt;HandleException&lt;/span&gt;(ex, &amp;quot;Global Exception Policy&amp;quot;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (&lt;span&gt;rethrow&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;throw;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;finally&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;da&lt;/span&gt;.Dispose();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;returnStream&lt;/span&gt;.Close();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;returnStream&lt;/span&gt;.Dispose();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;cmd&lt;/span&gt;.Dispose();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;dbConn&lt;/span&gt;.Close();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;dbConn&lt;/span&gt;.Dispose();&lt;/span&gt;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &lt;span&gt;returnStream&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The class above is fairly straight forward. As you can see &lt;span&gt;exportAdminExtract&lt;/span&gt;() takes three parameters which are &lt;span&gt;tableName&lt;/span&gt;, &lt;span&gt;dataSetName&lt;/span&gt;, and &lt;span&gt;storedProcedureName&lt;/span&gt;, connects to an Oracle database executes the appropriate commands and returns the &lt;span&gt;MemoryStream&lt;/span&gt; object.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Now to make use of this class let us assume you will be us&lt;span&gt;ing&lt;/span&gt; an image to fire the event to allow the client to perform the download. In your web form you would have someth&lt;span&gt;ing&lt;/span&gt; &lt;span&gt;similiar&lt;/span&gt; to the follow&lt;span&gt;ing&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;lt;asp:&lt;span&gt;ImageButton&lt;/span&gt; ID=&amp;quot;&lt;span&gt;btnExport&lt;/span&gt;&amp;quot; &lt;span&gt;runat&lt;/span&gt;=&amp;quot;server&amp;quot; &lt;span&gt;ToolTip&lt;/span&gt;=&amp;quot;Export&amp;quot; &lt;span&gt;CommandName&lt;/span&gt;=&amp;quot;&lt;span&gt;btnExport&lt;/span&gt;_Click&amp;quot; &lt;span&gt;ImageUrl&lt;/span&gt;=&amp;quot;&lt;span&gt;extractdata&lt;/span&gt;.&lt;span&gt;gif&lt;/span&gt;&amp;quot;&amp;gt;&amp;lt;/asp:&lt;span&gt;ImageButton&lt;/span&gt;&amp;gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;Next in the code behind you must define the event, if you look at the &lt;span&gt;ImageButton&lt;/span&gt; I defined above you will see the event name is &amp;quot;&lt;span&gt;btnExport&lt;/span&gt;_Click&amp;quot;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&lt;span&gt;/// Handles the Click event of the &lt;span&gt;btnExport&lt;/span&gt; control.&lt;/span&gt;&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;span&gt;/// &amp;lt;&lt;span&gt;param&lt;/span&gt; name=&amp;quot;sender&amp;quot;&amp;gt;The source of the event.&amp;lt;/&lt;span&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;/// &amp;lt;&lt;span&gt;param&lt;/span&gt; name=&amp;quot;e&amp;quot;&amp;gt;The &amp;lt;see &lt;span&gt;cref&lt;/span&gt;=&amp;quot;T:System.Web.UI.&lt;span&gt;ImageClickEventArgs&lt;/span&gt;&amp;quot;/&amp;gt; instance contain&lt;span&gt;ing&lt;/span&gt; the event data.&amp;lt;/&lt;span&gt;param&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;private void &lt;span&gt;btnExport&lt;/span&gt;_Click(object sender, System.Web.UI.&lt;span&gt;ImageClickEventArgs&lt;/span&gt; e)&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&lt;span&gt;ing&lt;/span&gt; _&lt;span&gt;tableName&lt;/span&gt; = &amp;quot;Offices&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&lt;span&gt;ing&lt;/span&gt; _&lt;span&gt;dataSetName&lt;/span&gt; = &amp;quot;&lt;span&gt;MyAppOffices&lt;/span&gt;&amp;quot;;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&lt;span&gt;ing&lt;/span&gt; _&lt;span&gt;storedProcedureName&lt;/span&gt; = &amp;quot;MYAPP_ADMIN.GETOFFICES&amp;quot;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;ExportData&lt;/span&gt; extracts = new &lt;span&gt;ExportData&lt;/span&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.IO.&lt;span&gt;MemoryStream&lt;/span&gt; &lt;span&gt;mstream&lt;/span&gt; = extracts.&lt;span&gt;exportAdminExtract&lt;/span&gt;(_&lt;span&gt;tableName&lt;/span&gt;, _&lt;span&gt;dataSetName&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;_&lt;span&gt;storedProcedureName&lt;/span&gt;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Convert the &lt;span&gt;memorystream&lt;/span&gt; to an array of bytes.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] &lt;span&gt;byteArray&lt;/span&gt; = &lt;span&gt;mstream&lt;/span&gt;.&lt;span&gt;ToArray&lt;/span&gt;();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Clean up the memory stream&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;mstream&lt;/span&gt;.Flush();&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span&gt;mstream&lt;/span&gt;.Close();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear all content output from the buffer stream&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Clear();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add a HTTP header to the output stream that specifies the default filename for the browser&amp;#39;s download dialog&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.&lt;span&gt;AddHeader&lt;/span&gt;(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;attachment; filename=&amp;quot; + _&lt;span&gt;tableName&lt;/span&gt; + &amp;quot;.&lt;span&gt;xml&lt;/span&gt;&amp;quot;);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add a HTTP header to the output stream that contains the content length(File Size).&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.&lt;span&gt;AddHeader&lt;/span&gt;(&amp;quot;Content-Length&amp;quot;, &lt;span&gt;byteArray&lt;/span&gt;.Length.&lt;span&gt;ToString&lt;/span&gt;());&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the HTTP MIME type of the output stream&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.&lt;span&gt;ContentType&lt;/span&gt; = &amp;quot;text/&lt;span&gt;xml&lt;/span&gt;&amp;quot;;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Write the data out to the client. &lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.&lt;span&gt;BinaryWrite&lt;/span&gt;(&lt;span&gt;byteArray&lt;/span&gt;);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.End();&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;That is all there is to it! Now when the client clicks the image to perform the download they will be presented a file save-as dialog which in turn allows them to save the data extract where they desire.&lt;/p&gt;&lt;p&gt;While this is not an earth shattering example there were some issues that I ran into that I felt I should share to prevent others from dealing with the same issues. While some of the problems I encountered were resolved, there we others that I am still seeking an answer for.&lt;/p&gt;&lt;p&gt;First and most important is you may not use the following with my example (at least in some cases):&lt;/p&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; 1:&amp;nbsp; Response.Cache.&lt;span&gt;SetCacheability&lt;/span&gt;(&lt;span&gt;HttpCacheability&lt;/span&gt;.&lt;span&gt;NoCache&lt;/span&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;I must thank Walter Wang for pointing out the following Article titled &amp;quot;&lt;a href="http://support.microsoft.com/kb/812935/"&gt;Internet Explorer Cannot Download: Error Message When You Use an HTTPS URL to Open an Office Document or PDF File&lt;/a&gt;&lt;span&gt;&amp;quot;. Also take note of the workaround as your code &lt;span&gt;modifcation&lt;/span&gt; may or may not be enough to correct this problem. In my case it was and my downloads work perfectly. Also a thanks goes out to &lt;span&gt;WenJun&lt;/span&gt; &lt;span&gt;Zhang&lt;/span&gt; for the suggestion of us&lt;span&gt;ing&lt;/span&gt; &lt;span&gt;Wfetch&lt;/span&gt; to see exactly what was &lt;span&gt;occuring&lt;/span&gt;, see the article titled &amp;quot;&lt;/span&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;284285"&gt;&lt;span&gt;HOW TO: Use &lt;span&gt;Wfetch&lt;/span&gt;.&lt;span&gt;exe&lt;/span&gt; to Troubleshoot HTTP Connections&lt;/span&gt;&lt;/a&gt;&amp;quot;.&lt;/p&gt;&lt;p&gt;I mentioned earlier that there were some problems that I am still seeking answers for. These are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span&gt;Downloads worked perfectly with &lt;span&gt;FireFox&lt;/span&gt; 1.5 even with the Response.Cache.&lt;span&gt;SetCacheability&lt;/span&gt; set on IIS5 and IIS6 both under SSL and no SSL. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Downloads worked perfectly with IE6 even with the Response.Cache.&lt;span&gt;SetCacheability&lt;/span&gt; set on IIS5&amp;nbsp;on XP PRO SP2 with no SSL. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Downloads worked perfectly with IE6 even with the Response.Cache.&lt;span&gt;SetCacheability&lt;/span&gt; set on&amp;nbsp;IIS6 &lt;span&gt;runn&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;ing&lt;/span&gt; as IIS5 Isolation&amp;nbsp;both under SSL and no SSL.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;;subject=How+to+use+a+MemoryStream+to+Perform+Downloads+and+Bypass+the+File+System+and+the+Problems+Between+Browsers+and+Servers" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;;title=How+to+use+a+MemoryStream+to+Perform+Downloads+and+Bypass+the+File+System+and+the+Problems+Between+Browsers+and+Servers" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;title=How+to+use+a+MemoryStream+to+Perform+Downloads+and+Bypass+the+File+System+and+the+Problems+Between+Browsers+and+Servers" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;;title=How+to+use+a+MemoryStream+to+Perform+Downloads+and+Bypass+the+File+System+and+the+Problems+Between+Browsers+and+Servers" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx&amp;amp;;title=How+to+use+a+MemoryStream+to+Perform+Downloads+and+Bypass+the+File+System+and+the+Problems+Between+Browsers+and+Servers&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/09/21/How-to-use-a-MemoryStream-to-Perform-Downloads-and-Bypass-the-File-System.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=22710" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/.NET_3A00_+ASP.NET/default.aspx">.NET: ASP.NET</category><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/.NET_3A00_+C_2300_/default.aspx">.NET: C#</category><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/XML/default.aspx">XML</category></item><item><title>How to edit an XML file that contains a namespace</title><link>http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx</link><pubDate>Mon, 27 Mar 2006 03:16:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:15989</guid><dc:creator>sswafford</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/sswafford/comments/15989.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/sswafford/commentrss.aspx?PostID=15989</wfw:commentRss><description>&lt;P&gt;I must admit using xpath to query and find a specific node in an XML file is not my strongest point and when a namespace was part of the XML file it threw me off even more. A huge thank you goes out to &lt;A href="http://geekswithblogs.net/adamsills/"&gt;Adam Sills&lt;/A&gt; for pointing out my errors.&lt;/P&gt;
&lt;P&gt;Take the following XML file that was generated using the June 2005 Patterns and Practices library:&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;BR&gt;&amp;lt;dataConfiguration&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;xmlSerializerSection type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data , Version=1.1.0.0, Culture=neutral, PublicKeyToken=null"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enterpriseLibrary.databaseSettings xmlns:xsd="&lt;/FONT&gt;&lt;A href="http://www.w3.org/2001/XMLSchema"&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;http://www.w3.org/2001/XMLSchema&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt; " xmlns:xsi="&lt;/FONT&gt;&lt;A href="http://www.w3.org/2001/XMLSchema-instance"&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;" defaultInstance="SQL Server Instance" xmlns=" &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data"&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;databaseTypes&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;databaseType name="Oracle" type="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase , Microsoft.Practices.EnterpriseLibrary.Data, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;databaseType name="SQL Server" type="Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase , Microsoft.Practices.EnterpriseLibrary.Data, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/databaseTypes&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;instances&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;instance name="Oracle Instance" type="Oracle" connectionString="Oracle Connection String" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;instance name="SQL Server Instance" type="SQL Server" connectionString="SQL Server Connection String" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/instances&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionStrings&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionString xsi:type="OracleConnectionStringData" name="Oracle Connection String"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameters&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="Data Source" value="null" isSensitive="false" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="Password" value="null" isSensitive="false" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="User Id" value="null" isSensitive="false" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="Host" value="null" isSensitive="false" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameters&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;packages /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/connectionString&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;connectionString name="SQL Server Connection String"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameters&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="database" value="null" isSensitive="false" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="Integrated Security" value="True" isSensitive="false" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="server" value="(local)" isSensitive="false" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/parameters&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/connectionString&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/connectionStrings&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/enterpriseLibrary.databaseSettings&amp;gt;&lt;BR&gt;&amp;nbsp; &amp;lt;/xmlSerializerSection&amp;gt;&lt;BR&gt;&amp;lt;/dataConfiguration&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Now what if I wanted to edit the Data Source value of the connectionString node that has a value of "Oracle Connection String"? To be brief let us assume I have a command button on a web form. The following code is placed in the Click event procedure:&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;// Instantiate a XmlDocument Object&lt;BR&gt;System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();&lt;BR&gt;xmlDoc.Load(file); //file that is passed in&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;// Instantiate a XmlNameSpaceManager Object&lt;BR&gt;XmlNamespaceManager xmlNsMgr = new XmlNamespaceManager(xmlDoc.NameTable);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;// Add the namespace &lt;BR&gt;xmlNsMgr.AddNamespace("x", "&lt;/FONT&gt;&lt;A title=http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data href="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data"&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data &lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;// Data Source XPath String&lt;BR&gt;string _xpathDS = "//x:connectionStrings/x:connectionString[@name='Oracle Connection String']/x:parameters/x:parameter[@name='Data Source']";&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;// Instantiate a XmlNode Object&lt;BR&gt;System.Xml.XmlNode node1 = xmlDoc.SelectSingleNode(_xpathDS, xmlNsMgr);&lt;BR&gt;if (node1 != null)&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;node1.Attributes["value"].Value= "oracledb";&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana color=#0000ff size=2&gt;xmlDoc.Save(file);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;That is all there is to it. As long as node1 is not null then the value of the Data Source is set to oracledb.&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;;subject=How+to+edit+an+XML+file+that+contains+a+namespace" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;;title=How+to+edit+an+XML+file+that+contains+a+namespace" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;title=How+to+edit+an+XML+file+that+contains+a+namespace" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;;title=How+to+edit+an+XML+file+that+contains+a+namespace" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx&amp;amp;;title=How+to+edit+an+XML+file+that+contains+a+namespace&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2006/03/26/15989.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=15989" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/.NET_3A00_+ASP.NET/default.aspx">.NET: ASP.NET</category><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/.NET_3A00_+C_2300_/default.aspx">.NET: C#</category><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/XML/default.aspx">XML</category></item><item><title>Free XML e-Book</title><link>http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx</link><pubDate>Sat, 01 Jan 2005 20:39:00 GMT</pubDate><guid isPermaLink="false">e709ad4c-0c15-48eb-915e-c462c6e85445:2521</guid><dc:creator>sswafford</dc:creator><slash:comments>0</slash:comments><comments>http://aspadvice.com/blogs/sswafford/comments/2521.aspx</comments><wfw:commentRss>http://aspadvice.com/blogs/sswafford/commentrss.aspx?PostID=2521</wfw:commentRss><description>&lt;P&gt;I just ran accross a free e-book titled&amp;nbsp;&lt;A href="http://www.theserverside.net/books/addisonwesley/EssentialXML/index.tss"&gt;Essential XML Quick Reference: A Programmer's Reference to XML, XPath, XSLT, XML Schema, SOAP, and More&lt;/A&gt;&amp;nbsp;at &lt;A href="http://www.theserverside.net"&gt;TheServerSide.NET&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Be sure to grab your download as the price is right!&lt;/P&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href = "mailto:?body=Thought you might like this: http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;;subject=Free+XML+e-Book" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;email it!&lt;/a&gt; |  &lt;a href = "http://del.icio.us/post?url=http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;;title=Free+XML+e-Book" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;bookmark it!&lt;/a&gt; |  &lt;a href = "http://www.digg.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;;phase=2" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;digg it!&lt;/a&gt; |  &lt;a href = "http://reddit.com/submit?url=http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;title=Free+XML+e-Book" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;reddit!&lt;/a&gt; |  &lt;a href = "http://www.dotnetkicks.com/submit/?url=http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;;title=Free+XML+e-Book" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;kick it!&lt;/a&gt; |  &lt;a href = "https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx&amp;amp;;title=Free+XML+e-Book&amp;amp;;top=1" target="_blank" title = "Post http://aspadvice.com/blogs/sswafford/archive/2005/01/01/2521.aspx"&gt;live it!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://aspadvice.com/aggbug.aspx?PostID=2521" width="1" height="1"&gt;</description><category domain="http://aspadvice.com/blogs/sswafford/archive/tags/XML/default.aspx">XML</category></item></channel></rss>