<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>Camelot Integration Toolkit for Microsoft SharePoint</title><link>http://camelottoolkit.codeplex.com/project/feeds/rss</link><description>Camelot Integration Toolkit simplifies integrations between SharePoint and other solutions and platforms e.g. PHP and Java using the Camelot .NET Connector.</description><item><title>Updated Wiki: Documentation</title><link>http://camelottoolkit.codeplex.com/documentation?version=28</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This documentation is specific for &lt;strong&gt;Camelot SharePoint Integration Toolkit version 2.0.2&lt;/strong&gt;. Documentation for earlier versions can be found
&lt;a href="http://camelottoolkit.codeplex.com/wikipage?title=Version%201.0" target="_self"&gt;
here&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This project requires the Camelot .NET Connector and at least a development license, which are free and renewable for all. To download the connector, visit
&lt;a href="http://www.bendsoft.com/net-sharepoint-connector/download/" target="_blank"&gt;
http://www.bendsoft.com/net-sharepoint-connector/download/&lt;/a&gt; and follow the instructions. You will need to register (with no obligations whatsoever) to get your free development license.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;a name="Installation"&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;a&gt;
&lt;li&gt;Download the latest recommended binary release from downloads &lt;/li&gt;&lt;li&gt;Run setup, and follow the instructions &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278075" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278076" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When, complete, the setup will ask you if you wish to start the &amp;quot;Camelot SharePoint Integration Service&amp;quot; and test the service. For your convenience, check both and finish installation. The service will then be automatically started and tested through your
 browser. If everything is fine, the CamelotService page will show up. If something went wrong, you probably forgot to install the Camelot .NET Connector.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278077" alt="Camelot Integration Toolkit Setup" width="502" height="501"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reconfiguring the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before testing the WCF service, you will need to configure the endpoint of the service and setup connectionstrings for the connector.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;First, modify the shared key. This key is shared between the service and all clients and must be provided when calling the service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;SHARED_KEY&lt;/strong&gt;&amp;quot; to the key of your choice
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify CDATA option (optional). This setting indicates whether text in CamelotXml's are enclosed in CDATA brackets or with traditional xml escaping (default)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;WRITE_CDATA&lt;/strong&gt;&amp;quot; to true if you want to enable CDATA brackets.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify ENABLE_IMPERSONATION option (optional). This indicates if the Camelot WCF service is allowed to impersonate the calling user. If NTML/Windows authentication is configured for the WCF service, the caller will need to authenticate to the WCF service.
 This service will then impersonate this user in all calls to SharePoint (requires that the connection string is setup with default authentication), ensuring that the user can only access lists and document libraries where permission is granted. See the next
 section for details on how to configure the WCF service authentication.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) if you want to enable impersonation. If this value is true, but no authentication scheme has been configured, the WCF service will not try to impersonate the user.
&lt;/li&gt;&lt;/ul&gt;
&lt;/a&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;Setup connection strings! Now, this part may need som explanation for new users. The Camelot WCF service uses the Camelot .NET Connector for querying SharePoint lists, views and document libraries. The connector is a ADO.NET driver for Microsoft SharePoint
 that allows querying SharePoint using standard SQL syntax, kind of using SharePoint as a typical database. Similar do other databases, this connector requires a connection string for connecting to SharePoint (see
&lt;/a&gt;&lt;a href="http://docs.bendsoft.com/camelot-net-connector/1_1/reference/connection-string-options/" target="_blank"&gt;connection string options&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the Camelot WCF service, connection strings are stored in the application configuration file. When calling the Camelot WCF service, the caller must specify the name of the connection string to use. You can configure as many different connection strings
 as you wish in the configuration.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278078" alt="Camelot Integration Toolkit Setup" width="407" height="230"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;connectionstrings&lt;/em&gt;, copy or modify the existing connection string called &amp;quot;sharepoint_connection&amp;quot;. In the simpliest case, you should only need to change
&lt;em&gt;Server&lt;/em&gt;, &lt;em&gt;Database&lt;/em&gt;, &lt;em&gt;User &lt;/em&gt;and &lt;em&gt;Password&lt;/em&gt;. Server is the ip or hostname to your SharePoint server and username/password must be valid SharePoint credentials. The database option is the site path on the SharePoint server, for example
 &amp;quot;HR&amp;quot; or &amp;quot;Development/Documentation&amp;quot;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; If your SharePoint server uses SSL (HTTPS), you must enable SSL in the connector by adding
&lt;strong&gt;SSL=True&lt;/strong&gt; the connection string.&lt;/p&gt;
&lt;p&gt;Configure the endpoint of the WCF service. In the configuration, locate the &lt;em&gt;
services &lt;/em&gt;section. You may need to modify the default base address (http://localhost:8080) according to your needs. This will be the address to the Camelot WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If necessary, modify value &lt;em&gt;baseAddress&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Save the configuration file and restart the WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, click &amp;quot;&lt;strong&gt;START Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;
&lt;/li&gt;&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using NTLM/Windows authentication in the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To enable NTLM/Windows authentication in the Camelot WCF Service, you will first need to modify the security mode in the binding options.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Under &lt;em&gt;basicHttpBinding&lt;/em&gt;, replace security mode &amp;quot;&lt;em&gt;None&lt;/em&gt;&amp;quot; to &amp;quot;&lt;em&gt;TransportCredentialsOnly&lt;/em&gt;&amp;quot; as shown below. Under
&lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) to enable impersonation.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;&amp;lt;!--
&amp;lt;security mode=&amp;quot;None&amp;quot;/&amp;gt;
--&amp;gt;&lt;/span&gt;

&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt; &lt;span style="color:red"&gt;mode&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;TransportCredentialOnly&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
     &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;transport&lt;/span&gt; &lt;span style="color:red"&gt;clientCredentialType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Ntlm&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now the service will require username and password authentication. This means that the service will impersonate the caller when querying SharePoint, ensuring that the caller can only read from and write to lists and document libraries according to the user's
 permissions in SharePoint. However, for this to work, the connection strings in the WCF service must be changed to authenticate with the default scheme. Explicit user credentials in connection strings will bypass this functionality.&lt;/p&gt;
&lt;p&gt;Under &lt;em&gt;connectionStrings&lt;/em&gt;, change the connection string by removing &lt;em&gt;
User &lt;/em&gt;and &lt;em&gt;Password &lt;/em&gt;and replace Authentication with &lt;em&gt;Default&lt;/em&gt;. This instructs the Camelot SharePoint Connector to connect with SharePoint as running user.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:green"&gt;&amp;lt;!--&amp;lt;add name=&amp;quot;sharepoint_connection&amp;quot; connectionString=&amp;quot;Server=yoursharepointserver;Database=cms;User=spuser;Password=sppassword;Authentication=Ntlm;TimeOut=60;&amp;quot; /&amp;gt;--&amp;gt;&lt;/span&gt;
  &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;connectionString&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Server=yoursharepointserver;Database=cms;Authentication=Default;TimeOut=60;&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;To finish the configuration, save the application file and restart the Camelot WCF Service.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Testing the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One way to test the service if you don't want to start coding right away is through
&lt;a href="http://www.wcfstorm.com/wcf/home.aspx" target="_blank"&gt;WCFStorm&lt;/a&gt; or similar program.&lt;/p&gt;
&lt;p&gt;In WCFStorm, make a new connection to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278081" alt="WCFStorm" width="515" height="103"&gt;&lt;/p&gt;
&lt;p&gt;When WCFStorm has discovered the service, you should be able to see all the methods on the left side.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278082" alt="WCFStorm" width="480" height="456"&gt;&lt;/p&gt;
&lt;p&gt;Test the service by selecting one of the methods, for example the &lt;em&gt;ExecuteCamelotXml&lt;/em&gt; method, and fill in the method parameters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sql &lt;/strong&gt;=&amp;gt; For example &amp;quot;select * from Tasks&amp;quot; (selects all columns from the default view of the Tasks list). Please see the official
&lt;a href="http://docs.bendsoft.com/camelot-net-connector/latest/" target="_blank"&gt;
Camelot .NET Connector documentation&lt;/a&gt; for all supported SQL commands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;connectionString &lt;/strong&gt;=&amp;gt; The name of the connection string that you wish to use, for example &amp;quot;sharepoint_connection&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;compression &lt;/strong&gt;=&amp;gt; Indicates if CamelotXml will be compressed (less data to send over the network), leave this as false (default) for now&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sharedKey&lt;/strong&gt; =&amp;gt; Now comes the tricky part, in order to access the service, you must enter the
&lt;strong&gt;MD5 &lt;/strong&gt;hash of the secret key. There are several good online tools available that you can use, such as
&lt;a href="http://www.stringfunction.com/md5-hash.html" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If everything goes fine, when invoking the &lt;em&gt;ExecuteCamelotXml &lt;/em&gt;method, you should get a
&lt;em&gt;CamelotXml&lt;/em&gt; as return value.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the toolkit in Visual Studio 2010&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Toolkit content description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="2" cellpadding="2" align="left" style="width:1172px; height:152px"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Utilities for selecting SharePoint data into &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; objects. &lt;/li&gt;&lt;li&gt;Implements the &lt;strong&gt;&lt;em&gt;ICamelotService&lt;/em&gt;&lt;/strong&gt; interface that defines the service contract for the Camelot WCF service that is exposed by the Camelot SharePoint Integration Service.
&lt;/li&gt;&lt;li&gt;Classes and methods used by the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data.
&lt;/li&gt;&lt;li&gt;Methods for exporting SharePoint data to MySQL and CSV file formats. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;This library depends on the Camelot .NET Connector for querying SharePoint lists, views and document libraries.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Client.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Methods for reading and writing &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt;. &lt;/li&gt;&lt;li&gt;Defines &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and &lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; classes.
&lt;/li&gt;&lt;li&gt;String extensions for MD5 and deflate compression. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;None. This library allows processing CamelotXml content in client side applications without external dependencies.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Provides a set of standard plugins that can be used in the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data. Exports include
&lt;em&gt;CamelotXmlPush&lt;/em&gt;, &lt;em&gt;LibraryToDisk&lt;/em&gt; and &lt;em&gt;MySqlDump&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;GAC&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe&lt;/td&gt;
&lt;td&gt;The &amp;quot;Camelot SharePoint Integration Service&amp;quot; is a standard windows service that hosts the Camelot WCF service and has the ability to execute scheduled exports from SharePoint. It can run on any Windows machine having access to the SharePoint environment(s)
 via HTTP/HTTPS that you want to integrate with.&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Installation folder&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe.xml&lt;/td&gt;
&lt;td&gt;The application configuration for the &lt;strong&gt;&lt;em&gt;Camelot SharePoint Integration Service&lt;/em&gt;&lt;/strong&gt;. Modify this to configure Camelot WCF service endpoints and SharePoint connection strings used by the service.&lt;br&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Tasks.xml&lt;/td&gt;
&lt;td&gt;The configuration for automated exports from SharePoint with examples. Modify this to activate exports from SharePoint on certain times.&lt;/td&gt;
&lt;td valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Adding reference to your VS2010 solution&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;In order to use the Camelot SharePoint Integration Toolkit in VS2010 and write your own CamelotXml based applications, you need to add a reference to
&lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; and &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; (which is installed in the GAC).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml, only a reference to &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; is required. This library has no external dependencies, thus can be used without Camelot .NET Connector being installed. This is perfect
 for distributed applications that integrates with SharePoint via the Camelot WCF Service, such as from an external website or in a Umbraco plugin&lt;em&gt;.
&lt;/em&gt;The Camelot.SharePointIntegration.dll contains utilities that helps selecting data from SharePoint into CameloXml.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In VS2010, add a reference to the &lt;em&gt;Camelot.SharePointIntegration.Client.dll
&lt;/em&gt;and optionally &lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289570" alt="VS2010" width="344" height="289"&gt;&lt;/p&gt;
&lt;p&gt;You should now be able to use the library in your code.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the Camelot WCF service&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service in VS2010&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To be able to connect to the Camelot WCF service in VS2010 you need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reference to the Camelot.SharePointIntegration.Client.dll (installed in GAC) &lt;/li&gt;&lt;li&gt;Service reference to the WCF service installed on any Windows environment that can access SharePoint via HTTP/HTTPS.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;In VS2010, add a service reference to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289579" alt="" width="473" height="381"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Querying list &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The following example shows how to query the &lt;em&gt;Tasks&lt;/em&gt; list in SharePoint via the Camelot WCF service. The WCF service returns a CamelotXml package, which is read using the
&lt;em&gt;&lt;strong&gt;ReadXml&lt;/strong&gt;&lt;/em&gt; method in the CamelotXml class. The resulting &lt;strong&gt;
&lt;em&gt;ListData&lt;/em&gt;&lt;/strong&gt; object may contain a list description, the list schema and the list items returned by the query. The shared key must match the shared key defined in the WCF service configuration.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = service.ExecuteCamelotXml(
                &lt;span style="color:#a31515"&gt;&amp;quot;SELECT ID, Title FROM Tasks ORDER BY ID DESC&amp;quot;&lt;/span&gt;, 
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;var&lt;/span&gt; listData = CamelotXml.ReadXml(xml);

            &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow item &lt;span style="color:blue"&gt;in&lt;/span&gt; listData.Rows.Rows)
            {
                Console.WriteLine(item[&lt;span style="color:#a31515"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;, &amp;quot;&lt;/span&gt; &amp;#43; item[&lt;span style="color:#a31515"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]);
            }

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note!&lt;/strong&gt; Don't forget to import the Camelot.SharePointIntegration.Client namespace to make use of some of the extension methods, such as
&lt;strong&gt;MD5()&lt;/strong&gt;, that is defined in the toolkit.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Insert an item into &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This example shows how simple one can insert items into any SharePoint list. You may use either the
&lt;em&gt;&lt;strong&gt;ExecuteNonQuery()&lt;/strong&gt;&lt;/em&gt; or the &lt;strong&gt;ExecuteScalar()&lt;/strong&gt; method. The latter returns the ID of the inserted item.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; result = service.ExecuteNonQuery(
                &lt;span style="color:#a31515"&gt;&amp;quot;INSERT INTO Tasks SET Title = 'My new task', Status = 'Not Started'&amp;quot;&lt;/span&gt;,
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;if&lt;/span&gt; (result)
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue"&gt;else&lt;/span&gt;
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Failed&amp;quot;&lt;/span&gt;);

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289591" alt="" width="675" height="319"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service from PHP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The &lt;a href="http://www.bendsoft.com/downloads/sharepoint-php-tools/" target="_blank"&gt;
Camelot PHP Tools&lt;/a&gt; is an open source (BSD license) project from Bendsoft that simplifies integration with SharePoint via the Camelot WCF service. The following example shows how to query SharePoint using this toolkit. For more details see the
&lt;a href="http://docs.bendsoft.com/camelot-php-tools/latest/" target="_blank"&gt;documentation&lt;/a&gt; for this product.&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;require_once&lt;/span&gt; &lt;span style="color:#a31515"&gt;'classes/class.camelot.soap.php'&lt;/span&gt;;

$SharePointQuery = &lt;span style="color:blue"&gt;new&lt;/span&gt; SharePointQuery(
    &lt;span style="color:blue"&gt;array&lt;/span&gt;(
        &lt;span style="color:#a31515"&gt;'sql'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;&amp;quot;SELECT * FROM `Tasks`&amp;quot;&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'compression'&lt;/span&gt; =&amp;gt; true,
        &lt;span style="color:#a31515"&gt;'connString'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;'sharepoint_connection'&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'sharedKey'&lt;/span&gt; =&amp;gt; constant(&lt;span style="color:#a31515"&gt;&amp;quot;WSDL_SHARED_KEY&amp;quot;&lt;/span&gt;)
    )
);

print_r($SharePointQuery);
&lt;/pre&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Integrating your applications with SharePoint&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit provides classes and methods that helps and simplifies SharePoint integration, such as with external applications and websites. The idea behind
&lt;a href="http://docs.bendsoft.com/camelot-xml/" target="_blank"&gt;CamelotXml&lt;/a&gt; is to provide a platform independent standard for storing, transferring and processing SharePoint data.&lt;/p&gt;
&lt;p&gt;This toolkit offers two general options of integrating with SharePoint.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Through the Camelot WCF service. This is ideal when developing in other languages than .NET and/or when developing &amp;quot;mobile&amp;quot; parts or external applications without direct access to SharePoint. The best about this method is that your application will not
 require any reference to the Camelot .NET Connector, which allows you to distribute your application easily. You may experience slightly decreased performance compared to direct integration.
&lt;/li&gt;&lt;li&gt;Integrate with SharePoint directly using the Camelot .NET Connector and utilities provided by this toolkit.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml files in .NET, you only need a reference to the Camelot.SharePointIntegration.Client library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Exporting list data to CamelotXml&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;You can export &lt;/span&gt;
&lt;/span&gt;&lt;span style="color:#000000"&gt;data from SharePoint lists and document libraries by providing a specific list and optionally view&lt;/span&gt; or by specifying a custom SQL query&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;. With the latter method
 the resulting &lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; object and &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt; does not include a list description and the schema is less detailed.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specified list and view to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from the results of SQL query to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;SELECT id, title, Status &lt;br&gt;                   FROM tasks where status = 'Not Started' ORDER BY priority&amp;quot;&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Reading CamelotXml content&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;For reading CamelotXml content in .NET, you only need a reference to the Camelot.SharePointIntegration.Client.dll. The toolkit provides methods for reading CamelotXml into
&lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; or &lt;strong&gt;DocumentLibraryData&lt;/strong&gt; objects, containing a list description, the list schema and the actual list items. However, the CamelotXml itself can be easily read using any XML reader of your choice.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Read CamelotXml file into a ListData object and print some information about the content. The ListData class is just one way to read the CamelotXml. You can easily use any other reader/xml parser of your choice, such
 as the XmlDocument or XmlReader classes.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = System.IO.File.ReadAllText(xmlFile, Encoding.UTF8);
&lt;span style="color:blue"&gt;var&lt;/span&gt; data = CamelotXml.ReadXml(xml);

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Description != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Id: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ID);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Title: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Title);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Type: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.BaseType);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Number of items: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ItemCount);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Created: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Created);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Last modified: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Modified);
    Console.WriteLine();
}

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Schema != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Schema.Rows)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;DisplayName&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;Type&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}
&lt;span style="color:blue"&gt;else&lt;/span&gt;
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataColumn col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Rows.Columns)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col.ColumnName &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col.DataType.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}&lt;em&gt;&lt;br&gt;&lt;/em&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Compressed and non-compressed CamelotXml&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The toolkit has built-in support for working with deflate compression, which can be useful when transferring and storing CamelotXml files. This is also a built-in feature of the Camelot WCF service
 and its clients. In .NET you can simply compress (and decompress) using the extended methods defined in the toolkit.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Selecting data from SharePoint and compressing the resulting CamelotXml file before writing to disk.&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml.&lt;strong&gt;DeflateCompress()&lt;/strong&gt;, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Working with document libraries&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit also provides support for working with document libraries, through the
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;DocumentLibraryNode&lt;/em&gt;&lt;/strong&gt; classes. The latter implements the
&lt;em&gt;IHierarchyData&lt;/em&gt; interface, making it possible to databind content of a document library to hierarchical data-bound controls, such as the TreeView control.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specific document library to CamelotXml&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryListData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Print all files in a document library and file size.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            Console.WriteLine(doc.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; ((&lt;span style="color:blue"&gt;double&lt;/span&gt;)doc.FileSize / 1024).ToString(&lt;span style="color:#a31515"&gt;&amp;quot;N2&amp;quot;&lt;/span&gt;) &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;kB)&amp;quot;&lt;/span&gt;);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Download all files in all folders from document library to disk. It will automatically create all folders. This example also checks last modified date and only updates newer files.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; folder = &lt;span style="color:#a31515"&gt;@&amp;quot;c:\sharepoint_files\&amp;quot;&lt;/span&gt;;

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:green"&gt;// folder&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType == &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (!Directory.Exists(folder &amp;#43; doc.Url))
                Directory.CreateDirectory(folder &amp;#43; doc.Url);

        &lt;span style="color:green"&gt;// document&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            &lt;span style="color:green"&gt;// skip file if same last modified date&lt;/span&gt;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.Exists(folder &amp;#43; doc.Url))
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.GetLastWriteTime(folder &amp;#43; doc.Url) == doc.Modified)
                    &lt;span style="color:blue"&gt;continue&lt;/span&gt;;

            &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; command = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointCommand(
                                                                                &lt;span style="color:blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;&amp;quot;CALL DOWNLOAD('{0}', '{1}')&amp;quot;&lt;/span&gt;,
                                                                                &lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, doc.ProcedureUrl), connection))
            {
                &lt;span style="color:blue"&gt;byte&lt;/span&gt;[] fileBytes = (&lt;span style="color:blue"&gt;byte&lt;/span&gt;[])command.ExecuteScalar();
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (fileBytes != &lt;span style="color:blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; fileBytes.Length &amp;gt; 0)
                {
                    File.WriteAllBytes(folder &amp;#43; doc.Url, fileBytes);
                    File.SetCreationTime(folder &amp;#43; doc.Url, doc.Created);
                    File.SetLastWriteTime(folder &amp;#43; doc.Url, doc.Modified);
                }
            }

            Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Downloaded: &amp;quot;&lt;/span&gt; &amp;#43; doc.Name);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Databind document library to ASP.NET TreeView control in VB&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;Protected&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt; Page_Load(&lt;span style="color:blue"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Object&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue"&gt;Handles&lt;/span&gt; &lt;span style="color:blue"&gt;Me&lt;/span&gt;.Load
	&lt;span style="color:blue"&gt;If&lt;/span&gt; &lt;span style="color:blue"&gt;Not&lt;/span&gt; Page.IsPostBack &lt;span style="color:blue"&gt;Then&lt;/span&gt;
		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; connection &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString)
		connection.Open()

		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;Nothing&lt;/span&gt;, connection)
		tree.DataSource = data.Documents
		tree.DataBind()
	&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;If&lt;/span&gt;
&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Writing MySQL dumps and CSV files&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit can also be used to export SharePoint content to MySQL via MySQL dump files. These files can be restored into MySQL using the MySQL command tool. It can be very useful when one needs to to more advanced data manipulation and reporting or just
 for backup.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to MySQL dump file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; sql = Camelot.SharePointIntegration.MySql.CreateMySqlDump(&lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_db&amp;quot;&lt;/span&gt;, data);

    System.IO.File.WriteAllText(sqlFile, sql, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In similar way, the toolkit provides methods for writing simple CSV files.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to CSV file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; csv = Camelot.SharePointIntegration.Csv.CreateCsv(data, &lt;span style="color:#a31515"&gt;','&lt;/span&gt;);

    System.IO.File.WriteAllText(csvFile, csv, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div id="_mcePaste" style="left:-10000px; top:2190px; width:1px; height:1px; overflow:hidden"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;TransportCredentialOnly&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Mon, 25 Mar 2013 20:03:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130325080325P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://camelottoolkit.codeplex.com/documentation?version=27</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This documentation is specific for &lt;strong&gt;Camelot SharePoint Integration Toolkit version 2.0.2&lt;/strong&gt;. Documentation for earlier versions can be found
&lt;a href="http://camelottoolkit.codeplex.com/wikipage?title=Version%201.0" target="_self"&gt;
here&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This project requires the Camelot .NET Connector and at least a development license, which are free and renewable for all. To download the connector, visit
&lt;a href="http://www.bendsoft.com/net-sharepoint-connector/download/" target="_blank"&gt;
http://www.bendsoft.com/net-sharepoint-connector/download/&lt;/a&gt; and follow the instructions. You will need to register (with no obligations whatsoever) to get your free development license.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;a name="Installation"&gt;&lt;/a&gt;&lt;a&gt;Installation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest recommended binary release from downloads &lt;/li&gt;&lt;li&gt;Run setup, and follow the instructions &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278075" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278076" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When, complete, the setup will ask you if you wish to start the &amp;quot;Camelot SharePoint Integration Service&amp;quot; and test the service. For your convenience, check both and finish installation. The service will then be automatically started and tested through your
 browser. If everything is fine, the CamelotService page will show up. If something went wrong, you probably forgot to install the Camelot .NET Connector.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278077" alt="Camelot Integration Toolkit Setup" width="502" height="501"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reconfiguring the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before testing the WCF service, you will need to configure the endpoint of the service and setup connectionstrings for the connector.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;First, modify the shared key. This key is shared between the service and all clients and must be provided when calling the service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;SHARED_KEY&lt;/strong&gt;&amp;quot; to the key of your choice
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify CDATA option (optional). This setting indicates whether text in CamelotXml's are enclosed in CDATA brackets or with traditional xml escaping (default)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;WRITE_CDATA&lt;/strong&gt;&amp;quot; to true if you want to enable CDATA brackets.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify ENABLE_IMPERSONATION option (optional). This indicates if the Camelot WCF service is allowed to impersonate the calling user. If NTML/Windows authentication is configured for the WCF service, the caller will need to authenticate to the WCF service.
 This service will then impersonate this user in all calls to SharePoint (requires that the connection string is setup with default authentication), ensuring that the user can only access lists and document libraries where permission is granted. See the next
 section for details on how to configure the WCF service authentication.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) if you want to enable impersonation. If this value is true, but no authentication scheme has been configured, the WCF service will not try to impersonate the user.
&lt;/li&gt;&lt;/ul&gt;
&lt;/a&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a&gt;Setup connection strings! Now, this part may need som explanation for new users. The Camelot WCF service uses the Camelot .NET Connector for querying SharePoint lists, views and document libraries. The connector is a ADO.NET driver for Microsoft SharePoint
 that allows querying SharePoint using standard SQL syntax, kind of using SharePoint as a typical database. Similar do other databases, this connector requires a connection string for connecting to SharePoint (see
&lt;/a&gt;&lt;a href="http://docs.bendsoft.com/camelot-net-connector/1_1/reference/connection-string-options/" target="_blank"&gt;connection string options&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the Camelot WCF service, connection strings are stored in the application configuration file. When calling the Camelot WCF service, the caller must specify the name of the connection string to use. You can configure as many different connection strings
 as you wish in the configuration.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278078" alt="Camelot Integration Toolkit Setup" width="407" height="230"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;connectionstrings&lt;/em&gt;, copy or modify the existing connection string called &amp;quot;sharepoint_connection&amp;quot;. In the simpliest case, you should only need to change
&lt;em&gt;Server&lt;/em&gt;, &lt;em&gt;Database&lt;/em&gt;, &lt;em&gt;User &lt;/em&gt;and &lt;em&gt;Password&lt;/em&gt;. Server is the ip or hostname to your SharePoint server and username/password must be valid SharePoint credentials. The database option is the site path on the SharePoint server, for example
 &amp;quot;HR&amp;quot; or &amp;quot;Development/Documentation&amp;quot;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; If your SharePoint server uses SSL (HTTPS), you must enable SSL in the connector by adding
&lt;strong&gt;SSL=True&lt;/strong&gt; the connection string.&lt;/p&gt;
&lt;p&gt;Configure the endpoint of the WCF service. In the configuration, locate the &lt;em&gt;
services &lt;/em&gt;section. You may need to modify the default base address (http://localhost:8080) according to your needs. This will be the address to the Camelot WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If necessary, modify value &lt;em&gt;baseAddress&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Save the configuration file and restart the WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, click &amp;quot;&lt;strong&gt;START Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;
&lt;/li&gt;&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using NTLM/Windows authentication in the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To enable NTLM/Windows authentication in the Camelot WCF Service, you will first need to modify the security mode in the binding options.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Under &lt;em&gt;basicHttpBinding&lt;/em&gt;, replace security mode &amp;quot;&lt;em&gt;None&lt;/em&gt;&amp;quot; to &amp;quot;&lt;em&gt;TransportCredentialsOnly&lt;/em&gt;&amp;quot; as shown below. Under
&lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) to enable impersonation.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;&amp;lt;!--
&amp;lt;security mode=&amp;quot;None&amp;quot;/&amp;gt;
--&amp;gt;&lt;/span&gt;

&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt; &lt;span style="color:red"&gt;mode&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;TransportCredentialOnly&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
     &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;transport&lt;/span&gt; &lt;span style="color:red"&gt;clientCredentialType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Ntlm&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now the service will require username and password authentication. This means that the service will impersonate the caller when querying SharePoint, ensuring that the caller can only read from and write to lists and document libraries according to the user's
 permissions in SharePoint. However, for this to work, the connection strings in the WCF service must be changed to authenticate with the default scheme. Explicit user credentials in connection strings will bypass this functionality.&lt;/p&gt;
&lt;p&gt;Under &lt;em&gt;connectionStrings&lt;/em&gt;, change the connection string by removing &lt;em&gt;
User &lt;/em&gt;and &lt;em&gt;Password &lt;/em&gt;and replace Authentication with &lt;em&gt;Default&lt;/em&gt;. This instructs the Camelot SharePoint Connector to connect with SharePoint as running user.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:green"&gt;&amp;lt;!--&amp;lt;add name=&amp;quot;sharepoint_connection&amp;quot; connectionString=&amp;quot;Server=yoursharepointserver;Database=cms;User=spuser;Password=sppassword;Authentication=Ntlm;TimeOut=60;&amp;quot; /&amp;gt;--&amp;gt;&lt;/span&gt;
  &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;connectionString&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Server=yoursharepointserver;Database=cms;Authentication=Default;TimeOut=60;&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;To finish the configuration, save the application file and restart the Camelot WCF Service.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Testing the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One way to test the service if you don't want to start coding right away is through
&lt;a href="http://www.wcfstorm.com/wcf/home.aspx" target="_blank"&gt;WCFStorm&lt;/a&gt; or similar program.&lt;/p&gt;
&lt;p&gt;In WCFStorm, make a new connection to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278081" alt="WCFStorm" width="515" height="103"&gt;&lt;/p&gt;
&lt;p&gt;When WCFStorm has discovered the service, you should be able to see all the methods on the left side.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278082" alt="WCFStorm" width="480" height="456"&gt;&lt;/p&gt;
&lt;p&gt;Test the service by selecting one of the methods, for example the &lt;em&gt;ExecuteCamelotXml&lt;/em&gt; method, and fill in the method parameters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sql &lt;/strong&gt;=&amp;gt; For example &amp;quot;select * from Tasks&amp;quot; (selects all columns from the default view of the Tasks list). Please see the official
&lt;a href="http://docs.bendsoft.com/camelot-net-connector/latest/" target="_blank"&gt;
Camelot .NET Connector documentation&lt;/a&gt; for all supported SQL commands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;connectionString &lt;/strong&gt;=&amp;gt; The name of the connection string that you wish to use, for example &amp;quot;sharepoint_connection&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;compression &lt;/strong&gt;=&amp;gt; Indicates if CamelotXml will be compressed (less data to send over the network), leave this as false (default) for now&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sharedKey&lt;/strong&gt; =&amp;gt; Now comes the tricky part, in order to access the service, you must enter the
&lt;strong&gt;MD5 &lt;/strong&gt;hash of the secret key. There are several good online tools available that you can use, such as
&lt;a href="http://www.stringfunction.com/md5-hash.html" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If everything goes fine, when invoking the &lt;em&gt;ExecuteCamelotXml &lt;/em&gt;method, you should get a
&lt;em&gt;CamelotXml&lt;/em&gt; as return value.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the toolkit in Visual Studio 2010&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Toolkit content description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="2" cellpadding="2" align="left" style="width:1172px; height:152px"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Utilities for selecting SharePoint data into &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; objects. &lt;/li&gt;&lt;li&gt;Implements the &lt;strong&gt;&lt;em&gt;ICamelotService&lt;/em&gt;&lt;/strong&gt; interface that defines the service contract for the Camelot WCF service that is exposed by the Camelot SharePoint Integration Service.
&lt;/li&gt;&lt;li&gt;Classes and methods used by the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data.
&lt;/li&gt;&lt;li&gt;Methods for exporting SharePoint data to MySQL and CSV file formats. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;This library depends on the Camelot .NET Connector for querying SharePoint lists, views and document libraries.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Client.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Methods for reading and writing &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt;. &lt;/li&gt;&lt;li&gt;Defines &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and &lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; classes.
&lt;/li&gt;&lt;li&gt;String extensions for MD5 and deflate compression. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;None. This library allows processing CamelotXml content in client side applications without external dependencies.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Provides a set of standard plugins that can be used in the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data. Exports include
&lt;em&gt;CamelotXmlPush&lt;/em&gt;, &lt;em&gt;LibraryToDisk&lt;/em&gt; and &lt;em&gt;MySqlDump&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;GAC&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe&lt;/td&gt;
&lt;td&gt;The &amp;quot;Camelot SharePoint Integration Service&amp;quot; is a standard windows service that hosts the Camelot WCF service and has the ability to execute scheduled exports from SharePoint. It can run on any Windows machine having access to the SharePoint environment(s)
 via HTTP/HTTPS that you want to integrate with.&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Installation folder&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe.xml&lt;/td&gt;
&lt;td&gt;The application configuration for the &lt;strong&gt;&lt;em&gt;Camelot SharePoint Integration Service&lt;/em&gt;&lt;/strong&gt;. Modify this to configure Camelot WCF service endpoints and SharePoint connection strings used by the service.&lt;br&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Tasks.xml&lt;/td&gt;
&lt;td&gt;The configuration for automated exports from SharePoint with examples. Modify this to activate exports from SharePoint on certain times.&lt;/td&gt;
&lt;td valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Adding reference to your VS2010 solution&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;In order to use the Camelot SharePoint Integration Toolkit in VS2010 and write your own CamelotXml based applications, you need to add a reference to
&lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; and &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; (which is installed in the GAC).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml, only a reference to &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; is required. This library has no external dependencies, thus can be used without Camelot .NET Connector being installed. This is perfect
 for distributed applications that integrates with SharePoint via the Camelot WCF Service, such as from an external website or in a Umbraco plugin&lt;em&gt;.
&lt;/em&gt;The Camelot.SharePointIntegration.dll contains utilities that helps selecting data from SharePoint into CameloXml.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In VS2010, add a reference to the &lt;em&gt;Camelot.SharePointIntegration.Client.dll
&lt;/em&gt;and optionally &lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289570" alt="VS2010" width="344" height="289"&gt;&lt;/p&gt;
&lt;p&gt;You should now be able to use the library in your code.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the Camelot WCF service&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service in VS2010&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To be able to connect to the Camelot WCF service in VS2010 you need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reference to the Camelot.SharePointIntegration.Client.dll (installed in GAC) &lt;/li&gt;&lt;li&gt;Service reference to the WCF service installed on any Windows environment that can access SharePoint via HTTP/HTTPS.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;In VS2010, add a service reference to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289579" alt="" width="473" height="381"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Querying list &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The following example shows how to query the &lt;em&gt;Tasks&lt;/em&gt; list in SharePoint via the Camelot WCF service. The WCF service returns a CamelotXml package, which is read using the
&lt;em&gt;&lt;strong&gt;ReadXml&lt;/strong&gt;&lt;/em&gt; method in the CamelotXml class. The resulting &lt;strong&gt;
&lt;em&gt;ListData&lt;/em&gt;&lt;/strong&gt; object may contain a list description, the list schema and the list items returned by the query. The shared key must match the shared key defined in the WCF service configuration.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = service.ExecuteCamelotXml(
                &lt;span style="color:#a31515"&gt;&amp;quot;SELECT ID, Title FROM Tasks ORDER BY ID DESC&amp;quot;&lt;/span&gt;, 
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;var&lt;/span&gt; listData = CamelotXml.ReadXml(xml);

            &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow item &lt;span style="color:blue"&gt;in&lt;/span&gt; listData.Rows.Rows)
            {
                Console.WriteLine(item[&lt;span style="color:#a31515"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;, &amp;quot;&lt;/span&gt; &amp;#43; item[&lt;span style="color:#a31515"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]);
            }

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note!&lt;/strong&gt; Don't forget to import the Camelot.SharePointIntegration.Client namespace to make use of some of the extension methods, such as
&lt;strong&gt;MD5()&lt;/strong&gt;, that is defined in the toolkit.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Insert an item into &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This example shows how simple one can insert items into any SharePoint list. You may use either the
&lt;em&gt;&lt;strong&gt;ExecuteNonQuery()&lt;/strong&gt;&lt;/em&gt; or the &lt;strong&gt;ExecuteScalar()&lt;/strong&gt; method. The latter returns the ID of the inserted item.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; result = service.ExecuteNonQuery(
                &lt;span style="color:#a31515"&gt;&amp;quot;INSERT INTO Tasks SET Title = 'My new task', Status = 'Not Started'&amp;quot;&lt;/span&gt;,
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;if&lt;/span&gt; (result)
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue"&gt;else&lt;/span&gt;
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Failed&amp;quot;&lt;/span&gt;);

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289591" alt="" width="675" height="319"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service from PHP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The &lt;a href="http://www.bendsoft.com/downloads/sharepoint-php-tools/" target="_blank"&gt;
Camelot PHP Tools&lt;/a&gt; is an open source (BSD license) project from Bendsoft that simplifies integration with SharePoint via the Camelot WCF service. The following example shows how to query SharePoint using this toolkit. For more details see the
&lt;a href="http://docs.bendsoft.com/camelot-php-tools/latest/" target="_blank"&gt;documentation&lt;/a&gt; for this product.&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;require_once&lt;/span&gt; &lt;span style="color:#a31515"&gt;'classes/class.camelot.soap.php'&lt;/span&gt;;

$SharePointQuery = &lt;span style="color:blue"&gt;new&lt;/span&gt; SharePointQuery(
    &lt;span style="color:blue"&gt;array&lt;/span&gt;(
        &lt;span style="color:#a31515"&gt;'sql'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;&amp;quot;SELECT * FROM `Tasks`&amp;quot;&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'compression'&lt;/span&gt; =&amp;gt; true,
        &lt;span style="color:#a31515"&gt;'connString'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;'sharepoint_connection'&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'sharedKey'&lt;/span&gt; =&amp;gt; constant(&lt;span style="color:#a31515"&gt;&amp;quot;WSDL_SHARED_KEY&amp;quot;&lt;/span&gt;)
    )
);

print_r($SharePointQuery);
&lt;/pre&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Integrating your applications with SharePoint&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit provides classes and methods that helps and simplifies SharePoint integration, such as with external applications and websites. The idea behind
&lt;a href="http://docs.bendsoft.com/camelot-xml/" target="_blank"&gt;CamelotXml&lt;/a&gt; is to provide a platform independent standard for storing, transferring and processing SharePoint data.&lt;/p&gt;
&lt;p&gt;This toolkit offers two general options of integrating with SharePoint.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Through the Camelot WCF service. This is ideal when developing in other languages than .NET and/or when developing &amp;quot;mobile&amp;quot; parts or external applications without direct access to SharePoint. The best about this method is that your application will not
 require any reference to the Camelot .NET Connector, which allows you to distribute your application easily. You may experience slightly decreased performance compared to direct integration.
&lt;/li&gt;&lt;li&gt;Integrate with SharePoint directly using the Camelot .NET Connector and utilities provided by this toolkit.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml files in .NET, you only need a reference to the Camelot.SharePointIntegration.Client library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Exporting list data to CamelotXml&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;You can export &lt;/span&gt;
&lt;/span&gt;&lt;span style="color:#000000"&gt;data from SharePoint lists and document libraries by providing a specific list and optionally view&lt;/span&gt; or by specifying a custom SQL query&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;. With the latter method
 the resulting &lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; object and &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt; does not include a list description and the schema is less detailed.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specified list and view to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from the results of SQL query to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;SELECT id, title, Status &lt;br&gt;                   FROM tasks where status = 'Not Started' ORDER BY priority&amp;quot;&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Reading CamelotXml content&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;For reading CamelotXml content in .NET, you only need a reference to the Camelot.SharePointIntegration.Client.dll. The toolkit provides methods for reading CamelotXml into
&lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; or &lt;strong&gt;DocumentLibraryData&lt;/strong&gt; objects, containing a list description, the list schema and the actual list items. However, the CamelotXml itself can be easily read using any XML reader of your choice.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Read CamelotXml file into a ListData object and print some information about the content. The ListData class is just one way to read the CamelotXml. You can easily use any other reader/xml parser of your choice, such
 as the XmlDocument or XmlReader classes.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = System.IO.File.ReadAllText(xmlFile, Encoding.UTF8);
&lt;span style="color:blue"&gt;var&lt;/span&gt; data = CamelotXml.ReadXml(xml);

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Description != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Id: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ID);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Title: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Title);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Type: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.BaseType);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Number of items: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ItemCount);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Created: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Created);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Last modified: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Modified);
    Console.WriteLine();
}

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Schema != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Schema.Rows)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;DisplayName&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;Type&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}
&lt;span style="color:blue"&gt;else&lt;/span&gt;
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataColumn col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Rows.Columns)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col.ColumnName &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col.DataType.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}&lt;em&gt;&lt;br&gt;&lt;/em&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Compressed and non-compressed CamelotXml&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The toolkit has built-in support for working with deflate compression, which can be useful when transferring and storing CamelotXml files. This is also a built-in feature of the Camelot WCF service
 and its clients. In .NET you can simply compress (and decompress) using the extended methods defined in the toolkit.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Selecting data from SharePoint and compressing the resulting CamelotXml file before writing to disk.&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml.&lt;strong&gt;DeflateCompress()&lt;/strong&gt;, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Working with document libraries&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit also provides support for working with document libraries, through the
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;DocumentLibraryNode&lt;/em&gt;&lt;/strong&gt; classes. The latter implements the
&lt;em&gt;IHierarchyData&lt;/em&gt; interface, making it possible to databind content of a document library to hierarchical data-bound controls, such as the TreeView control.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specific document library to CamelotXml&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryListData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Print all files in a document library and file size.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            Console.WriteLine(doc.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; ((&lt;span style="color:blue"&gt;double&lt;/span&gt;)doc.FileSize / 1024).ToString(&lt;span style="color:#a31515"&gt;&amp;quot;N2&amp;quot;&lt;/span&gt;) &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;kB)&amp;quot;&lt;/span&gt;);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Download all files in all folders from document library to disk. It will automatically create all folders. This example also checks last modified date and only updates newer files.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; folder = &lt;span style="color:#a31515"&gt;@&amp;quot;c:\sharepoint_files\&amp;quot;&lt;/span&gt;;

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:green"&gt;// folder&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType == &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (!Directory.Exists(folder &amp;#43; doc.Url))
                Directory.CreateDirectory(folder &amp;#43; doc.Url);

        &lt;span style="color:green"&gt;// document&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            &lt;span style="color:green"&gt;// skip file if same last modified date&lt;/span&gt;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.Exists(folder &amp;#43; doc.Url))
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.GetLastWriteTime(folder &amp;#43; doc.Url) == doc.Modified)
                    &lt;span style="color:blue"&gt;continue&lt;/span&gt;;

            &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; command = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointCommand(
                                                                                &lt;span style="color:blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;&amp;quot;CALL DOWNLOAD('{0}', '{1}')&amp;quot;&lt;/span&gt;,
                                                                                &lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, doc.ProcedureUrl), connection))
            {
                &lt;span style="color:blue"&gt;byte&lt;/span&gt;[] fileBytes = (&lt;span style="color:blue"&gt;byte&lt;/span&gt;[])command.ExecuteScalar();
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (fileBytes != &lt;span style="color:blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; fileBytes.Length &amp;gt; 0)
                {
                    File.WriteAllBytes(folder &amp;#43; doc.Url, fileBytes);
                    File.SetCreationTime(folder &amp;#43; doc.Url, doc.Created);
                    File.SetLastWriteTime(folder &amp;#43; doc.Url, doc.Modified);
                }
            }

            Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Downloaded: &amp;quot;&lt;/span&gt; &amp;#43; doc.Name);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Databind document library to ASP.NET TreeView control in VB&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;Protected&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt; Page_Load(&lt;span style="color:blue"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Object&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue"&gt;Handles&lt;/span&gt; &lt;span style="color:blue"&gt;Me&lt;/span&gt;.Load
	&lt;span style="color:blue"&gt;If&lt;/span&gt; &lt;span style="color:blue"&gt;Not&lt;/span&gt; Page.IsPostBack &lt;span style="color:blue"&gt;Then&lt;/span&gt;
		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; connection &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString)
		connection.Open()

		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;Nothing&lt;/span&gt;, connection)
		tree.DataSource = data.Documents
		tree.DataBind()
	&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;If&lt;/span&gt;
&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Writing MySQL dumps and CSV files&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit can also be used to export SharePoint content to MySQL via MySQL dump files. These files can be restored into MySQL using the MySQL command tool. It can be very useful when one needs to to more advanced data manipulation and reporting or just
 for backup.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to MySQL dump file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; sql = Camelot.SharePointIntegration.MySql.CreateMySqlDump(&lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_db&amp;quot;&lt;/span&gt;, data);

    System.IO.File.WriteAllText(sqlFile, sql, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In similar way, the toolkit provides methods for writing simple CSV files.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to CSV file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; csv = Camelot.SharePointIntegration.Csv.CreateCsv(data, &lt;span style="color:#a31515"&gt;','&lt;/span&gt;);

    System.IO.File.WriteAllText(csvFile, csv, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div id="_mcePaste" style="left:-10000px; top:2190px; width:1px; height:1px; overflow:hidden"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;TransportCredentialOnly&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Mon, 25 Mar 2013 20:02:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20130325080230P</guid></item><item><title>Created Release: Camelot SharePoint Integration Toolkit 2.5.0 (mar 24, 2013)</title><link>http://camelottoolkit.codeplex.com/releases?ReleaseId=103946</link><description>&lt;div class="wikidoc"&gt;This is version 2.5.0 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;documentation&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.5.0&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).&lt;/li&gt;
&lt;li&gt;Added UploadAttachment method in the WCF Service&lt;/li&gt;
&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service&lt;/li&gt;
&lt;li&gt;Obsoleted the ExecuteCamelotXmlLimit and ExecuteCount methods in the WCF Service&lt;/li&gt;
&lt;li&gt;Added EventLog support for exceptions in the WCF Service methods&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison. The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Sun, 24 Mar 2013 21:19:43 GMT</pubDate><guid isPermaLink="false">Created Release: Camelot SharePoint Integration Toolkit 2.5.0 (mar 24, 2013) 20130324091943P</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.5.0 (Mar 24, 2013)</title><link>http://camelottoolkit.codeplex.com/releases/view/103946</link><description>
&lt;div class="wikidoc"&gt;This is version 2.5.0 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C.
 It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.5.0&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).
&lt;/li&gt;&lt;li&gt;Added UploadAttachment method in the WCF Service &lt;/li&gt;&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service &lt;/li&gt;&lt;li&gt;Obsoleted the ExecuteCamelotXmlLimit and ExecuteCount methods in the WCF Service
&lt;/li&gt;&lt;li&gt;Added EventLog support for exceptions in the WCF Service methods&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison.
 The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 24 Mar 2013 21:19:43 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.5.0 (Mar 24, 2013) 20130324091943P</guid></item><item><title>Source code checked in, #c07eceac1991</title><link>http://camelottoolkit.codeplex.com/SourceControl/changeset/changes/c07eceac1991</link><description>Version 2.5.0 Source Code&amp;#10;- Added UploadAttachment method&amp;#10;- Added version parameter to the DownloadFile method&amp;#10;- Any exceptions will now be written to the Camelot ApPlication in the Windows EventLog</description><author>bendsoft</author><pubDate>Sun, 24 Mar 2013 21:12:07 GMT</pubDate><guid isPermaLink="false">Source code checked in, #c07eceac1991 20130324091207P</guid></item><item><title>Created Release: Camelot SharePoint Integration Toolkit 2.5.0 Beta2 (mar 17, 2013)</title><link>http://camelottoolkit.codeplex.com/releases?ReleaseId=103542</link><description>&lt;div class="wikidoc"&gt;This is version 2.5.0 Beta2 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;documentation&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.5.0 Beta2&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Fixed the version handling in the DownloadFile method in the WCF Service&lt;/li&gt;
&lt;li&gt;Obsoleted the ExecuteCamelotXmlLimit and ExecuteCount methods in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.5.0 Beta1&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).&lt;/li&gt;
&lt;li&gt;Added UploadAttachment method in the WCF Service&lt;/li&gt;
&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison. The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Sun, 17 Mar 2013 20:12:03 GMT</pubDate><guid isPermaLink="false">Created Release: Camelot SharePoint Integration Toolkit 2.5.0 Beta2 (mar 17, 2013) 20130317081203P</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.5.0 Beta2 (Mar 17, 2013)</title><link>http://camelottoolkit.codeplex.com/releases/view/103542</link><description>
&lt;div class="wikidoc"&gt;This is version 2.5.0 Beta2 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and
 Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.5.0 Beta2&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the version handling in the DownloadFile method in the WCF Service &lt;/li&gt;&lt;li&gt;Obsoleted the ExecuteCamelotXmlLimit and ExecuteCount methods in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.5.0 Beta1&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).
&lt;/li&gt;&lt;li&gt;Added UploadAttachment method in the WCF Service &lt;/li&gt;&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison.
 The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 17 Mar 2013 20:12:03 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.5.0 Beta2 (Mar 17, 2013) 20130317081203P</guid></item><item><title>Created Release: Camelot SharePoint Integration Toolkit 2.5.0 Beta1 (Mar 04, 2013)</title><link>http://camelottoolkit.codeplex.com/releases?ReleaseId=102926</link><description>&lt;div class="wikidoc"&gt;This is version 2.5.0 Beta1 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;documentation&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.5.0 Beta1&lt;/b&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).&lt;/li&gt;
&lt;li&gt;Added UploadAttachment method in the WCF Service&lt;/li&gt;
&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison. The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Mon, 04 Mar 2013 18:28:17 GMT</pubDate><guid isPermaLink="false">Created Release: Camelot SharePoint Integration Toolkit 2.5.0 Beta1 (Mar 04, 2013) 20130304062817P</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.5.0 Beta1 (三月 04, 2013)</title><link>http://camelottoolkit.codeplex.com/releases/view/102926</link><description>
&lt;div class="wikidoc"&gt;This is version 2.5.0 Beta1 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and
 Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.5.0 Beta1&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 3.0).
&lt;/li&gt;&lt;li&gt;Added UploadAttachment method in the WCF Service &lt;/li&gt;&lt;li&gt;Added version parameter to the DownloadFile method in the WCF Service&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison.
 The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Mon, 04 Mar 2013 18:28:17 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.5.0 Beta1 (三月 04, 2013) 20130304062817P</guid></item><item><title>Source code checked in, #7af9ed91b41d</title><link>http://camelottoolkit.codeplex.com/SourceControl/changeset/changes/7af9ed91b41d</link><description>Updated to connector 3.0 and added UploadAttachment method and version parameter to the DownloadFile method</description><author>bendsoft</author><pubDate>Mon, 04 Mar 2013 16:50:59 GMT</pubDate><guid isPermaLink="false">Source code checked in, #7af9ed91b41d 20130304045059P</guid></item><item><title>Source code checked in, #1b31851119b3</title><link>http://camelottoolkit.codeplex.com/SourceControl/changeset/changes/1b31851119b3</link><description>License file</description><author>bendsoft</author><pubDate>Tue, 12 Feb 2013 21:05:47 GMT</pubDate><guid isPermaLink="false">Source code checked in, #1b31851119b3 20130212090547P</guid></item><item><title>Source code checked in, #8012c0fa4643</title><link>http://camelottoolkit.codeplex.com/SourceControl/changeset/changes/8012c0fa4643</link><description>Updated license file</description><author>bendsoft</author><pubDate>Tue, 12 Feb 2013 21:04:58 GMT</pubDate><guid isPermaLink="false">Source code checked in, #8012c0fa4643 20130212090458P</guid></item><item><title>Updated Release: Camelot SharePoint Integration Toolkit 2.0.5 (jul 11, 2012)</title><link>http://camelottoolkit.codeplex.com/releases/view/90975</link><description>&lt;div class="wikidoc"&gt;This is version 2.0.5 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;documentation&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison. The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bendsoft</author><pubDate>Wed, 12 Sep 2012 01:34:48 GMT</pubDate><guid isPermaLink="false">Updated Release: Camelot SharePoint Integration Toolkit 2.0.5 (jul 11, 2012) 20120912013448A</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.0.5 (Jul 11, 2012)</title><link>http://camelottoolkit.codeplex.com/releases/view/90975</link><description>
&lt;div class="wikidoc"&gt;This is version 2.0.5 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C.
 It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
This is a signed release by Bendsoft HB. If you experience any installation or certificate issues please send an email to info@bendsoft.com.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison.
 The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Wed, 12 Sep 2012 01:34:48 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.0.5 (Jul 11, 2012) 20120912013448A</guid></item><item><title>Updated Release: Camelot SharePoint Integration Toolkit 2.0.5 (jul 11, 2012)</title><link>http://camelottoolkit.codeplex.com/releases/view/90975</link><description>&lt;div class="wikidoc"&gt;This is version 2.0.5 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;documentation&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
When installing this package on Windows Vista and above, make sure that you run the setup with administrative rights or installation may not complete successfully. We have also noticed that some anti-virus programs may complain when installing this package, e.g. avast!. If you experience installation issues, you may try to disable your anti-virus program during installation process.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison. The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bendsoft</author><pubDate>Wed, 11 Jul 2012 18:08:15 GMT</pubDate><guid isPermaLink="false">Updated Release: Camelot SharePoint Integration Toolkit 2.0.5 (jul 11, 2012) 20120711060815P</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.0.5 (Jul 11, 2012)</title><link>http://camelottoolkit.codeplex.com/releases/view/90975</link><description>
&lt;div class="wikidoc"&gt;This is version 2.0.5 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C.
 It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
When installing this package on Windows Vista and above, make sure that you run the setup with administrative rights or installation may not complete successfully. We have also noticed that some anti-virus programs may complain when installing this package,
 e.g. avast!. If you experience installation issues, you may try to disable your anti-virus program during installation process.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.5&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Compiled for the latest version of the &lt;a href="http://www.bendsoft.com"&gt;Camelot .NET Connector&lt;/a&gt; (version 2.0). This new version introduces full support for JOIN and UNION along with some new cool SQL operators such as regular expression comparison.
 The JOIN syntax allows you to join between any columns in any lists, including both left and inner joins. UNION is used to combine the results from multiple queries into one single result set.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Wed, 11 Jul 2012 18:08:14 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.0.5 (Jul 11, 2012) 20120711060814P</guid></item><item><title>Source code checked in, #954f70660104</title><link>http://camelottoolkit.codeplex.com/SourceControl/changeset/changes/954f70660104</link><description>Version 2.0.5 source code.&amp;#10;- Compiled for latest version of the Connector &amp;#40;2.0&amp;#41; introducing full support for JOIN and UNION and more.</description><author>Ulf</author><pubDate>Wed, 11 Jul 2012 17:49:47 GMT</pubDate><guid isPermaLink="false">Source code checked in, #954f70660104 20120711054947P</guid></item><item><title>Created Release: Camelot SharePoint Integration Toolkit 2.0.4 (feb 26, 2012)</title><link>http://camelottoolkit.codeplex.com/releases?ReleaseId=83041</link><description>&lt;div class="wikidoc"&gt;This is version 2.0.4 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C. It also simplifies SharePoint integration in .NET applications.&lt;br /&gt;&lt;br /&gt;Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation" class="externalLink"&gt;documentation&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for usage and examples.&lt;br /&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
When installing this package on Windows Vista and above, make sure that you run the setup with administrative rights or installation may not complete successfully. We have also noticed that some anti-virus programs may complain when installing this package, e.g. avast!. If you experience installation issues, you may try to disable your anti-virus program during installation process.&lt;br /&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.&lt;/li&gt;
&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies, thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.&lt;/li&gt;
&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.&lt;/li&gt;
&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented under the ListData and DocumentLibraryData classes.&lt;/li&gt;
&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.&lt;/li&gt;
&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names.&lt;/li&gt;
&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Sun, 26 Feb 2012 15:54:58 GMT</pubDate><guid isPermaLink="false">Created Release: Camelot SharePoint Integration Toolkit 2.0.4 (feb 26, 2012) 20120226035458P</guid></item><item><title>Released: Camelot SharePoint Integration Toolkit 2.0.4 (Feb 26, 2012)</title><link>http://camelottoolkit.codeplex.com/releases/view/83041</link><description>
&lt;div class="wikidoc"&gt;This is version 2.0.4 of the Camelot Integration Toolkit for Microsoft SharePoint. It provides classes and methods that makes it easier to integrate SharePoint with other applications, platforms and languages, e.g. PHP, Java and Objective-C.
 It also simplifies SharePoint integration in .NET applications.&lt;br&gt;
&lt;br&gt;
Please see the associated &lt;a href="http://camelottoolkit.codeplex.com/documentation"&gt;
documentation&lt;span&gt;&lt;/span&gt;&lt;/a&gt; for usage and examples.&lt;br&gt;
&lt;h2&gt;Installation notes&lt;/h2&gt;
When installing this package on Windows Vista and above, make sure that you run the setup with administrative rights or installation may not complete successfully. We have also noticed that some anti-virus programs may complain when installing this package,
 e.g. avast!. If you experience installation issues, you may try to disable your anti-virus program during installation process.&lt;br&gt;
&lt;h2&gt;Changes&lt;/h2&gt;
&lt;b&gt;Changes in version 2.0.4&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Fixed bug in CamelotXml for some special characters in column names, e.g. &amp;#39;:&amp;#39;. The problem can be seen when selecting lookup columns from a second list.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCamelotXmlLimit&lt;/i&gt;. This methods enables client side paging of lists and document libraries.
&lt;/li&gt;&lt;li&gt;Added new method to the Camelot WCF Service named &lt;i&gt;ExecuteCount&lt;/i&gt;. This method returns an integer value that indicates the number of rows returned by query.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.3&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;i&gt;This release was never made official.&lt;/i&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.2&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added NTLM/Windows authentication support in the Camelot WCF Service! This allows the WCF Service to impersonate the calling user in SharePoint, making it easier to integrate applications through the WCF Service that needs to query data in SharePoint that
 is unique or depends on the user. Impersonation ensures that the calling user cannot access lists or document libraries without given permission. Some common integration scenarios are working with user based document libraries, task lists and calendars. External
 applications and websites that runs under the same authentication as SharePoint can easily access data from SharePoint based on the logged in user, or you can implement custom authentication mechanisms in external applications connected to SharePoint.&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Changes in version 2.0.1&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Added new library called Camelot.SharePointIntegration.Client.dll. This library now contains the ListData, DocumentLibraryData and CamelotXml classes and provides general methods for reading and writing CamelotXml files. This library has no dependencies,
 thus can be used to read CamelotXml and integrate with the Camelot WCF service also where Camelot .NET Connector is not installed.
&lt;/li&gt;&lt;li&gt;Removed ListData, DocumentLibraryData and CamelotXml classes from library Camelot.SharePointIntegration.dll.
&lt;/li&gt;&lt;li&gt;Added ListDataUtility and DocumentLibraryDataUtility classes to Camelot.SharePointIntegration.dll providing methods for selecting SharePoint data into ListData and DocumentLibraryData objects. This replaces some functionality that was previously implemented
 under the ListData and DocumentLibraryData classes. &lt;/li&gt;&lt;li&gt;Moved MD5, DeflateCompress and DeflateDecompress methods from the Utilities class to the Extensions class under Camelot.SharePointIntegration.Client namespace.
&lt;/li&gt;&lt;li&gt;Fixed bug in ReadXml method that caused incorrect column names. &lt;/li&gt;&lt;li&gt;Added new method for exporting document libraries to ListData, see included example class ExportDocumentLibraryAsCamelotXml.&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Sun, 26 Feb 2012 15:54:58 GMT</pubDate><guid isPermaLink="false">Released: Camelot SharePoint Integration Toolkit 2.0.4 (Feb 26, 2012) 20120226035458P</guid></item><item><title>Updated Wiki: Documentation</title><link>http://camelottoolkit.codeplex.com/documentation?version=26</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;This documentation is specific for &lt;strong&gt;Camelot SharePoint Integration Toolkit version 2.0.2&lt;/strong&gt;. Documentation for earlier versions can be found
&lt;a href="http://camelottoolkit.codeplex.com/wikipage?title=Version%201.0" target="_self"&gt;
here&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This project requires the Camelot .NET Connector and at least a development license, which are free and renewable for all. To download the connector, visit
&lt;a href="http://www.bendsoft.com/net-sharepoint-connector/download/" target="_blank"&gt;
http://www.bendsoft.com/net-sharepoint-connector/download/&lt;/a&gt; and follow the instructions. You will need to register (with no obligations whatsoever) to get your free development license.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Download the latest recommended binary release from downloads &lt;/li&gt;&lt;li&gt;Run setup, and follow the instructions &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278075" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278076" alt="Camelot Integration Toolkit Setup" width="309" height="238"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When, complete, the setup will ask you if you wish to start the &amp;quot;Camelot SharePoint Integration Service&amp;quot; and test the service. For your convenience, check both and finish installation. The service will then be automatically started and tested through your
 browser. If everything is fine, the CamelotService page will show up. If something went wrong, you probably forgot to install the Camelot .NET Connector.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278077" alt="Camelot Integration Toolkit Setup" width="502" height="501"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Reconfiguring the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Before testing the WCF service, you will need to configure the endpoint of the service and setup connectionstrings for the connector.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;First, modify the shared key. This key is shared between the service and all clients and must be provided when calling the service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;SHARED_KEY&lt;/strong&gt;&amp;quot; to the key of your choice
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify CDATA option (optional). This setting indicates whether text in CamelotXml's are enclosed in CDATA brackets or with traditional xml escaping (default)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;&lt;strong&gt;WRITE_CDATA&lt;/strong&gt;&amp;quot; to true if you want to enable CDATA brackets.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Modify ENABLE_IMPERSONATION option (optional). This indicates if the Camelot WCF service is allowed to impersonate the calling user. If NTML/Windows authentication is configured for the WCF service, the caller will need to authenticate to the WCF service.
 This service will then impersonate this user in all calls to SharePoint (requires that the connection string is setup with default authentication), ensuring that the user can only access lists and document libraries where permission is granted. See the next
 section for details on how to configure the WCF service authentication.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) if you want to enable impersonation. If this value is true, but no authentication scheme has been configured, the WCF service will not try to impersonate the user.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Setup connection strings! Now, this part may need som explanation for new users. The Camelot WCF service uses the Camelot .NET Connector for querying SharePoint lists, views and document libraries. The connector is a ADO.NET driver for Microsoft SharePoint
 that allows querying SharePoint using standard SQL syntax, kind of using SharePoint as a typical database. Similar do other databases, this connector requires a connection string for connecting to SharePoint (see
&lt;a href="http://docs.bendsoft.com/camelot-net-connector/1_1/reference/connection-string-options/" target="_blank"&gt;
connection string options&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the Camelot WCF service, connection strings are stored in the application configuration file. When calling the Camelot WCF service, the caller must specify the name of the connection string to use. You can configure as many different connection strings
 as you wish in the configuration.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278078" alt="Camelot Integration Toolkit Setup" width="407" height="230"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Under &lt;em&gt;connectionstrings&lt;/em&gt;, copy or modify the existing connection string called &amp;quot;sharepoint_connection&amp;quot;. In the simpliest case, you should only need to change
&lt;em&gt;Server&lt;/em&gt;, &lt;em&gt;Database&lt;/em&gt;, &lt;em&gt;User &lt;/em&gt;and &lt;em&gt;Password&lt;/em&gt;. Server is the ip or hostname to your SharePoint server and username/password must be valid SharePoint credentials. The database option is the site path on the SharePoint server, for example
 &amp;quot;HR&amp;quot; or &amp;quot;Development/Documentation&amp;quot;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; If your SharePoint server uses SSL (HTTPS), you must enable SSL in the connector by adding
&lt;strong&gt;SSL=True&lt;/strong&gt; the connection string.&lt;/p&gt;
&lt;p&gt;Configure the endpoint of the WCF service. In the configuration, locate the &lt;em&gt;
services &lt;/em&gt;section. You may need to modify the default base address (http://localhost:8080) according to your needs. This will be the address to the Camelot WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If necessary, modify value &lt;em&gt;baseAddress&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Save the configuration file and restart the WCF service.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, click &amp;quot;&lt;strong&gt;START Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;
&lt;/li&gt;&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using NTLM/Windows authentication in the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To enable NTLM/Windows authentication in the Camelot WCF Service, you will first need to modify the security mode in the binding options.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;From the Windows start menu, locate the &amp;quot;Camelot SharePoint Integration Toolkit&amp;quot; under programs. Stop the WCF service by clicking &amp;quot;&lt;strong&gt;STOP Camelot SharePoint Integration Service&lt;/strong&gt;&amp;quot;.
&lt;/li&gt;&lt;li&gt;From the location, open the application configuration associated to the integration service, click &amp;quot;&lt;strong&gt;Application XML Configuration&lt;/strong&gt;&amp;quot;. You will need a suitable XML editor installed to open this file.
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Under &lt;em&gt;basicHttpBinding&lt;/em&gt;, replace security mode &amp;quot;&lt;em&gt;None&lt;/em&gt;&amp;quot; to &amp;quot;&lt;em&gt;TransportCredentialsOnly&lt;/em&gt;&amp;quot; as shown below. Under
&lt;em&gt;appSettings&lt;/em&gt;, modify the value of &amp;quot;ENABLE_IMPERSONATION&amp;quot; to true (default) to enable impersonation.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:green"&gt;&amp;lt;!--
&amp;lt;security mode=&amp;quot;None&amp;quot;/&amp;gt;
--&amp;gt;&lt;/span&gt;

&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt; &lt;span style="color:red"&gt;mode&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;TransportCredentialOnly&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
     &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;transport&lt;/span&gt; &lt;span style="color:red"&gt;clientCredentialType&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Ntlm&amp;quot;&lt;/span&gt;&lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;security&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now the service will require username and password authentication. This means that the service will impersonate the caller when querying SharePoint, ensuring that the caller can only read from and write to lists and document libraries according to the user's
 permissions in SharePoint. However, for this to work, the connection strings in the WCF service must be changed to authenticate with the default scheme. Explicit user credentials in connection strings will bypass this functionality.&lt;/p&gt;
&lt;p&gt;Under &lt;em&gt;connectionStrings&lt;/em&gt;, change the connection string by removing &lt;em&gt;
User &lt;/em&gt;and &lt;em&gt;Password &lt;/em&gt;and replace Authentication with &lt;em&gt;Default&lt;/em&gt;. This instructs the Camelot SharePoint Connector to connect with SharePoint as running user.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
  &lt;span style="color:green"&gt;&amp;lt;!--&amp;lt;add name=&amp;quot;sharepoint_connection&amp;quot; connectionString=&amp;quot;Server=yoursharepointserver;Database=cms;User=spuser;Password=sppassword;Authentication=Ntlm;TimeOut=60;&amp;quot; /&amp;gt;--&amp;gt;&lt;/span&gt;
  &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt; &lt;span style="color:red"&gt;name&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt; &lt;span style="color:red"&gt;connectionString&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;quot;Server=yoursharepointserver;Database=cms;Authentication=Default;TimeOut=60;&amp;quot;&lt;/span&gt; &lt;span style="color:blue"&gt;/&amp;gt;&lt;/span&gt;
&lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;To finish the configuration, save the application file and restart the Camelot WCF Service.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Testing the WCF service&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One way to test the service if you don't want to start coding right away is through
&lt;a href="http://www.wcfstorm.com/wcf/home.aspx" target="_blank"&gt;WCFStorm&lt;/a&gt; or similar program.&lt;/p&gt;
&lt;p&gt;In WCFStorm, make a new connection to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278081" alt="WCFStorm" width="515" height="103"&gt;&lt;/p&gt;
&lt;p&gt;When WCFStorm has discovered the service, you should be able to see all the methods on the left side.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=278082" alt="WCFStorm" width="480" height="456"&gt;&lt;/p&gt;
&lt;p&gt;Test the service by selecting one of the methods, for example the &lt;em&gt;ExecuteCamelotXml&lt;/em&gt; method, and fill in the method parameters.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sql &lt;/strong&gt;=&amp;gt; For example &amp;quot;select * from Tasks&amp;quot; (selects all columns from the default view of the Tasks list). Please see the official
&lt;a href="http://docs.bendsoft.com/camelot-net-connector/latest/" target="_blank"&gt;
Camelot .NET Connector documentation&lt;/a&gt; for all supported SQL commands.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;connectionString &lt;/strong&gt;=&amp;gt; The name of the connection string that you wish to use, for example &amp;quot;sharepoint_connection&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;compression &lt;/strong&gt;=&amp;gt; Indicates if CamelotXml will be compressed (less data to send over the network), leave this as false (default) for now&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;sharedKey&lt;/strong&gt; =&amp;gt; Now comes the tricky part, in order to access the service, you must enter the
&lt;strong&gt;MD5 &lt;/strong&gt;hash of the secret key. There are several good online tools available that you can use, such as
&lt;a href="http://www.stringfunction.com/md5-hash.html" target="_blank"&gt;this&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If everything goes fine, when invoking the &lt;em&gt;ExecuteCamelotXml &lt;/em&gt;method, you should get a
&lt;em&gt;CamelotXml&lt;/em&gt; as return value.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the toolkit in Visual Studio 2010&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Toolkit content description&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table border="0" cellspacing="2" cellpadding="2" align="left" style="width:1172px; height:152px"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Requirements&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Utilities for selecting SharePoint data into &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; objects. &lt;/li&gt;&lt;li&gt;Implements the &lt;strong&gt;&lt;em&gt;ICamelotService&lt;/em&gt;&lt;/strong&gt; interface that defines the service contract for the Camelot WCF service that is exposed by the Camelot SharePoint Integration Service.
&lt;/li&gt;&lt;li&gt;Classes and methods used by the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data.
&lt;/li&gt;&lt;li&gt;Methods for exporting SharePoint data to MySQL and CSV file formats. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;This library depends on the Camelot .NET Connector for querying SharePoint lists, views and document libraries.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Client.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Methods for reading and writing &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt;. &lt;/li&gt;&lt;li&gt;Defines &lt;strong&gt;&lt;em&gt;ListData &lt;/em&gt;&lt;/strong&gt;and &lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; classes.
&lt;/li&gt;&lt;li&gt;String extensions for MD5 and deflate compression. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;None. This library allows processing CamelotXml content in client side applications without external dependencies.&lt;/td&gt;
&lt;td valign="top"&gt;GAC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/td&gt;
&lt;td&gt;
&lt;ul&gt;
&lt;li&gt;Provides a set of standard plugins that can be used in the Camelot SharePoint Integration Service for automated/scheduled export of SharePoint data. Exports include
&lt;em&gt;CamelotXmlPush&lt;/em&gt;, &lt;em&gt;LibraryToDisk&lt;/em&gt; and &lt;em&gt;MySqlDump&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;GAC&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe&lt;/td&gt;
&lt;td&gt;The &amp;quot;Camelot SharePoint Integration Service&amp;quot; is a standard windows service that hosts the Camelot WCF service and has the ability to execute scheduled exports from SharePoint. It can run on any Windows machine having access to the SharePoint environment(s)
 via HTTP/HTTPS that you want to integrate with.&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Camelot.SharePointIntegration.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Client.dll&lt;/p&gt;
&lt;p&gt;Camelot.SharePointIntegration.Plugins.dll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Installation folder&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;CamelotSharePointIntegrationService.exe.xml&lt;/td&gt;
&lt;td&gt;The application configuration for the &lt;strong&gt;&lt;em&gt;Camelot SharePoint Integration Service&lt;/em&gt;&lt;/strong&gt;. Modify this to configure Camelot WCF service endpoints and SharePoint connection strings used by the service.&lt;br&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align:top"&gt;Tasks.xml&lt;/td&gt;
&lt;td&gt;The configuration for automated exports from SharePoint with examples. Modify this to activate exports from SharePoint on certain times.&lt;/td&gt;
&lt;td valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top"&gt;Installation folder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&lt;br&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;Adding reference to your VS2010 solution&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;In order to use the Camelot SharePoint Integration Toolkit in VS2010 and write your own CamelotXml based applications, you need to add a reference to
&lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; and &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; (which is installed in the GAC).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml, only a reference to &lt;em&gt;Camelot.SharePointIntegration.Client.dll&lt;/em&gt; is required. This library has no external dependencies, thus can be used without Camelot .NET Connector being installed. This is perfect
 for distributed applications that integrates with SharePoint via the Camelot WCF Service, such as from an external website or in a Umbraco plugin&lt;em&gt;.
&lt;/em&gt;The Camelot.SharePointIntegration.dll contains utilities that helps selecting data from SharePoint into CameloXml.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In VS2010, add a reference to the &lt;em&gt;Camelot.SharePointIntegration.Client.dll
&lt;/em&gt;and optionally &lt;em&gt;Camelot.SharePointIntegration.dll&lt;/em&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289570" alt="VS2010" width="344" height="289"&gt;&lt;/p&gt;
&lt;p&gt;You should now be able to use the library in your code.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Using the Camelot WCF service&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service in VS2010&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To be able to connect to the Camelot WCF service in VS2010 you need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Reference to the Camelot.SharePointIntegration.Client.dll (installed in GAC) &lt;/li&gt;&lt;li&gt;Service reference to the WCF service installed on any Windows environment that can access SharePoint via HTTP/HTTPS.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;In VS2010, add a service reference to the Camelot WCF service.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289579" alt="" width="473" height="381"&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Querying list &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The following example shows how to query the &lt;em&gt;Tasks&lt;/em&gt; list in SharePoint via the Camelot WCF service. The WCF service returns a CamelotXml package, which is read using the
&lt;em&gt;&lt;strong&gt;ReadXml&lt;/strong&gt;&lt;/em&gt; method in the CamelotXml class. The resulting &lt;strong&gt;
&lt;em&gt;ListData&lt;/em&gt;&lt;/strong&gt; object may contain a list description, the list schema and the list items returned by the query. The shared key must match the shared key defined in the WCF service configuration.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = service.ExecuteCamelotXml(
                &lt;span style="color:#a31515"&gt;&amp;quot;SELECT ID, Title FROM Tasks ORDER BY ID DESC&amp;quot;&lt;/span&gt;, 
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;var&lt;/span&gt; listData = CamelotXml.ReadXml(xml);

            &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow item &lt;span style="color:blue"&gt;in&lt;/span&gt; listData.Rows.Rows)
            {
                Console.WriteLine(item[&lt;span style="color:#a31515"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;, &amp;quot;&lt;/span&gt; &amp;#43; item[&lt;span style="color:#a31515"&gt;&amp;quot;Title&amp;quot;&lt;/span&gt;]);
            }

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note!&lt;/strong&gt; Don't forget to import the Camelot.SharePointIntegration.Client namespace to make use of some of the extension methods, such as
&lt;strong&gt;MD5()&lt;/strong&gt;, that is defined in the toolkit.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Insert an item into &amp;quot;Tasks&amp;quot; via Camelot WCF&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This example shows how simple one can insert items into any SharePoint list. You may use either the
&lt;em&gt;&lt;strong&gt;ExecuteNonQuery()&lt;/strong&gt;&lt;/em&gt; or the &lt;strong&gt;ExecuteScalar()&lt;/strong&gt; method. The latter returns the ID of the inserted item.&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Linq;
&lt;span style="color:blue"&gt;using&lt;/span&gt; System.Text;
&lt;span style="color:blue"&gt;using&lt;/span&gt; Camelot.SharePointIntegration.Client;

&lt;span style="color:blue"&gt;namespace&lt;/span&gt; ConsoleApplication1
{
    &lt;span style="color:blue"&gt;class&lt;/span&gt; Program
    {
        &lt;span style="color:blue"&gt;const&lt;/span&gt; &lt;span style="color:blue"&gt;string&lt;/span&gt; sharedKey = &lt;span style="color:#a31515"&gt;&amp;quot;MySharedKey&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue"&gt;static&lt;/span&gt; &lt;span style="color:blue"&gt;void&lt;/span&gt; Main(&lt;span style="color:blue"&gt;string&lt;/span&gt;[] args)
        {
            &lt;span style="color:blue"&gt;var&lt;/span&gt; service = &lt;span style="color:blue"&gt;new&lt;/span&gt; CamelotService.CamelotServiceClient();
            &lt;span style="color:blue"&gt;var&lt;/span&gt; result = service.ExecuteNonQuery(
                &lt;span style="color:#a31515"&gt;&amp;quot;INSERT INTO Tasks SET Title = 'My new task', Status = 'Not Started'&amp;quot;&lt;/span&gt;,
                &lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_connection&amp;quot;&lt;/span&gt;, sharedKey.MD5());

            &lt;span style="color:blue"&gt;if&lt;/span&gt; (result)
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;);
            &lt;span style="color:blue"&gt;else&lt;/span&gt;
                Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Failed&amp;quot;&lt;/span&gt;);

            Console.ReadKey();
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src="http://download.codeplex.com/Download?ProjectName=camelottoolkit&amp;DownloadId=289591" alt="" width="675" height="319"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Connecting to the Camelot WCF service from PHP&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The &lt;a href="http://www.bendsoft.com/downloads/sharepoint-php-tools/" target="_blank"&gt;
Camelot PHP Tools&lt;/a&gt; is an open source (BSD license) project from Bendsoft that simplifies integration with SharePoint via the Camelot WCF service. The following example shows how to query SharePoint using this toolkit. For more details see the
&lt;a href="http://docs.bendsoft.com/camelot-php-tools/latest/" target="_blank"&gt;documentation&lt;/a&gt; for this product.&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;require_once&lt;/span&gt; &lt;span style="color:#a31515"&gt;'classes/class.camelot.soap.php'&lt;/span&gt;;

$SharePointQuery = &lt;span style="color:blue"&gt;new&lt;/span&gt; SharePointQuery(
    &lt;span style="color:blue"&gt;array&lt;/span&gt;(
        &lt;span style="color:#a31515"&gt;'sql'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;&amp;quot;SELECT * FROM `Tasks`&amp;quot;&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'compression'&lt;/span&gt; =&amp;gt; true,
        &lt;span style="color:#a31515"&gt;'connString'&lt;/span&gt; =&amp;gt; &lt;span style="color:#a31515"&gt;'sharepoint_connection'&lt;/span&gt;,
        &lt;span style="color:#a31515"&gt;'sharedKey'&lt;/span&gt; =&amp;gt; constant(&lt;span style="color:#a31515"&gt;&amp;quot;WSDL_SHARED_KEY&amp;quot;&lt;/span&gt;)
    )
);

print_r($SharePointQuery);
&lt;/pre&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Integrating your applications with SharePoint&lt;br&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit provides classes and methods that helps and simplifies SharePoint integration, such as with external applications and websites. The idea behind
&lt;a href="http://docs.bendsoft.com/camelot-xml/" target="_blank"&gt;CamelotXml&lt;/a&gt; is to provide a platform independent standard for storing, transferring and processing SharePoint data.&lt;/p&gt;
&lt;p&gt;This toolkit offers two general options of integrating with SharePoint.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Through the Camelot WCF service. This is ideal when developing in other languages than .NET and/or when developing &amp;quot;mobile&amp;quot; parts or external applications without direct access to SharePoint. The best about this method is that your application will not
 require any reference to the Camelot .NET Connector, which allows you to distribute your application easily. You may experience slightly decreased performance compared to direct integration.
&lt;/li&gt;&lt;li&gt;Integrate with SharePoint directly using the Camelot .NET Connector and utilities provided by this toolkit.
&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;NOTE!&lt;/strong&gt; For reading CamelotXml files in .NET, you only need a reference to the Camelot.SharePointIntegration.Client library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Exporting list data to CamelotXml&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;You can export &lt;/span&gt;
&lt;/span&gt;&lt;span style="color:#000000"&gt;data from SharePoint lists and document libraries by providing a specific list and optionally view&lt;/span&gt; or by specifying a custom SQL query&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;. With the latter method
 the resulting &lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; object and &lt;em&gt;&lt;strong&gt;CamelotXml&lt;/strong&gt;&lt;/em&gt; does not include a list description and the schema is less detailed.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specified list and view to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;
&lt;br&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from the results of SQL query to CamelotXml&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
	connection.Open();

	&lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;SELECT id, title, Status &lt;br&gt;                   FROM tasks where status = 'Not Started' ORDER BY priority&amp;quot;&lt;/span&gt;, connection);
	&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

	System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Reading CamelotXml content&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;For reading CamelotXml content in .NET, you only need a reference to the Camelot.SharePointIntegration.Client.dll. The toolkit provides methods for reading CamelotXml into
&lt;em&gt;&lt;strong&gt;ListData&lt;/strong&gt;&lt;/em&gt; or &lt;strong&gt;DocumentLibraryData&lt;/strong&gt; objects, containing a list description, the list schema and the actual list items. However, the CamelotXml itself can be easily read using any XML reader of your choice.&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Read CamelotXml file into a ListData object and print some information about the content. The ListData class is just one way to read the CamelotXml. You can easily use any other reader/xml parser of your choice, such
 as the XmlDocument or XmlReader classes.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;var&lt;/span&gt; xml = System.IO.File.ReadAllText(xmlFile, Encoding.UTF8);
&lt;span style="color:blue"&gt;var&lt;/span&gt; data = CamelotXml.ReadXml(xml);

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Description != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Id: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ID);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Title: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Title);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Type: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.BaseType);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Number of items: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.ItemCount);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Created: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Created);
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  Last modified: &amp;quot;&lt;/span&gt; &amp;#43; data.Description.Modified);
    Console.WriteLine();
}

&lt;span style="color:blue"&gt;if&lt;/span&gt; (data.Schema != &lt;span style="color:blue"&gt;null&lt;/span&gt;)
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataRow col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Schema.Rows)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;DisplayName&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col[&lt;span style="color:#a31515"&gt;&amp;quot;Type&amp;quot;&lt;/span&gt;] &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}
&lt;span style="color:blue"&gt;else&lt;/span&gt;
{
    Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Columns&amp;quot;&lt;/span&gt;);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (System.Data.DataColumn col &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Rows.Columns)
        Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;  &amp;quot;&lt;/span&gt; &amp;#43; col.ColumnName &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; col.DataType.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;);
}&lt;em&gt;&lt;br&gt;&lt;/em&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Compressed and non-compressed CamelotXml&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#808000"&gt;&lt;span style="color:#000000"&gt;The toolkit has built-in support for working with deflate compression, which can be useful when transferring and storing CamelotXml files. This is also a built-in feature of the Camelot WCF service
 and its clients. In .NET you can simply compress (and decompress) using the extended methods defined in the toolkit.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Selecting data from SharePoint and compressing the resulting CamelotXml file before writing to disk.&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml.&lt;strong&gt;DeflateCompress()&lt;/strong&gt;, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Working with document libraries&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit also provides support for working with document libraries, through the
&lt;strong&gt;&lt;em&gt;DocumentLibraryData&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;DocumentLibraryNode&lt;/em&gt;&lt;/strong&gt; classes. The latter implements the
&lt;em&gt;IHierarchyData&lt;/em&gt; interface, making it possible to databind content of a document library to hierarchical data-bound controls, such as the TreeView control.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export information from a specific document library to CamelotXml&lt;br&gt;
&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryListData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; xml = CamelotXml.CreateXml(data);

    System.IO.File.WriteAllText(xmlFile, xml, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Print all files in a document library and file size.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            Console.WriteLine(doc.Name &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot; (&amp;quot;&lt;/span&gt; &amp;#43; ((&lt;span style="color:blue"&gt;double&lt;/span&gt;)doc.FileSize / 1024).ToString(&lt;span style="color:#a31515"&gt;&amp;quot;N2&amp;quot;&lt;/span&gt;) &amp;#43; &lt;span style="color:#a31515"&gt;&amp;quot;kB)&amp;quot;&lt;/span&gt;);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Download all files in all folders from document library to disk. It will automatically create all folders. This example also checks last modified date and only updates newer files.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;null&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; folder = &lt;span style="color:#a31515"&gt;@&amp;quot;c:\sharepoint_files\&amp;quot;&lt;/span&gt;;

    &lt;span style="color:blue"&gt;foreach&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; doc &lt;span style="color:blue"&gt;in&lt;/span&gt; data.Documents)
    {
        &lt;span style="color:green"&gt;// folder&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType == &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (!Directory.Exists(folder &amp;#43; doc.Url))
                Directory.CreateDirectory(folder &amp;#43; doc.Url);

        &lt;span style="color:green"&gt;// document&lt;/span&gt;
        &lt;span style="color:blue"&gt;if&lt;/span&gt; (doc.ContentType != &lt;span style="color:#a31515"&gt;&amp;quot;Folder&amp;quot;&lt;/span&gt;)
        {
            &lt;span style="color:green"&gt;// skip file if same last modified date&lt;/span&gt;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.Exists(folder &amp;#43; doc.Url))
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (File.GetLastWriteTime(folder &amp;#43; doc.Url) == doc.Modified)
                    &lt;span style="color:blue"&gt;continue&lt;/span&gt;;

            &lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; command = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointCommand(
                                                                                &lt;span style="color:blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;&amp;quot;CALL DOWNLOAD('{0}', '{1}')&amp;quot;&lt;/span&gt;,
                                                                                &lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, doc.ProcedureUrl), connection))
            {
                &lt;span style="color:blue"&gt;byte&lt;/span&gt;[] fileBytes = (&lt;span style="color:blue"&gt;byte&lt;/span&gt;[])command.ExecuteScalar();
                &lt;span style="color:blue"&gt;if&lt;/span&gt; (fileBytes != &lt;span style="color:blue"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; fileBytes.Length &amp;gt; 0)
                {
                    File.WriteAllBytes(folder &amp;#43; doc.Url, fileBytes);
                    File.SetCreationTime(folder &amp;#43; doc.Url, doc.Created);
                    File.SetLastWriteTime(folder &amp;#43; doc.Url, doc.Modified);
                }
            }

            Console.WriteLine(&lt;span style="color:#a31515"&gt;&amp;quot;Downloaded: &amp;quot;&lt;/span&gt; &amp;#43; doc.Name);
        }
    }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Databind document library to ASP.NET TreeView control in VB&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;Protected&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt; Page_Load(&lt;span style="color:blue"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;Object&lt;/span&gt;, &lt;span style="color:blue"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue"&gt;Handles&lt;/span&gt; &lt;span style="color:blue"&gt;Me&lt;/span&gt;.Load
	&lt;span style="color:blue"&gt;If&lt;/span&gt; &lt;span style="color:blue"&gt;Not&lt;/span&gt; Page.IsPostBack &lt;span style="color:blue"&gt;Then&lt;/span&gt;
		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; connection &lt;span style="color:blue"&gt;As&lt;/span&gt; &lt;span style="color:blue"&gt;New&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString)
		connection.Open()

		&lt;span style="color:blue"&gt;Dim&lt;/span&gt; data = Camelot.SharePointIntegration.DocumentLibraryDataUtility.CreateDocumentLibraryData(&lt;span style="color:#a31515"&gt;&amp;quot;Shared Documents&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;Nothing&lt;/span&gt;, connection)
		tree.DataSource = data.Documents
		tree.DataBind()
	&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;If&lt;/span&gt;
&lt;span style="color:blue"&gt;End&lt;/span&gt; &lt;span style="color:blue"&gt;Sub&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="color:#808000"&gt;Writing MySQL dumps and CSV files&lt;br&gt;
&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The toolkit can also be used to export SharePoint content to MySQL via MySQL dump files. These files can be restored into MySQL using the MySQL command tool. It can be very useful when one needs to to more advanced data manipulation and reporting or just
 for backup.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to MySQL dump file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; sql = Camelot.SharePointIntegration.MySql.CreateMySqlDump(&lt;span style="color:#a31515"&gt;&amp;quot;sharepoint_db&amp;quot;&lt;/span&gt;, data);

    System.IO.File.WriteAllText(sqlFile, sql, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;In similar way, the toolkit provides methods for writing simple CSV files.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#000080"&gt;&lt;em&gt;Example: Export SharePoint list content to CSV file&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div style="color:black; background-color:white"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; connection = &lt;span style="color:blue"&gt;new&lt;/span&gt; Camelot.SharePointConnector.Data.SharePointConnection(connectionString))
{
    connection.Open();

    &lt;span style="color:blue"&gt;var&lt;/span&gt; data = Camelot.SharePointIntegration.ListDataUtility.CreateListData(&lt;span style="color:#a31515"&gt;&amp;quot;Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515"&gt;&amp;quot;All Tasks&amp;quot;&lt;/span&gt;, &lt;span style="color:blue"&gt;false&lt;/span&gt;, connection);
    &lt;span style="color:blue"&gt;var&lt;/span&gt; csv = Camelot.SharePointIntegration.Csv.CreateCsv(data, &lt;span style="color:#a31515"&gt;','&lt;/span&gt;);

    System.IO.File.WriteAllText(csvFile, csv, Encoding.UTF8);
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div id="_mcePaste" style="left:-10000px; top:2190px; width:1px; height:1px; overflow:hidden"&gt;
&lt;pre&gt;&lt;span style="color:blue"&gt;TransportCredentialOnly&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>Bendsoft</author><pubDate>Fri, 20 Jan 2012 10:39:10 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20120120103910A</guid></item></channel></rss>