Mailing List


Active Directory Products
Object Compare
Permission Compare

IPhone Products
Calls To Calendar
SMS To Gmail
Voicemail To Gmail

How Long For Me


NerdyHearn - Blog

<< Back To All Blogs

Retrieving data from SharePoint SOAP Requests using LINQ

Wednesday, May 13th, 2009

As I have been doing quite a bit of work with the SharePoint web services I recently came across an interesting issue related to querying SOAP XML, and specifically in SharePoint. This issue also applies to other SOAP requests, and XML requests in general that have Namespace prefixes.

The issue arises while trying to do a very common LINQ query such as the following:
var lists = from list in doc.Descendants("List")
new SharePointList
Description = list.Attribute("Description").Value,
Id = list.Attribute("ID").Value,
Title = list.Attribute("Title").Value

I was positive that my query was correct, but it was continually returning 0 results.

Enter the world of namespacing. I assumed that because the List element was not specifically prefixed that it would not matter, but I was wrong.

From a few levels above, in this example the element was GetListCollectionResponse, there was a namespace declared which was

You cannot simply add the namespace with a colon in LINQ because it is an invalid element name.

You need to declare a specific XMLNamespace element like so:
XNamespace s = "";

Then, modify the above query to change the doc.Descendants element to the following:
doc.Descendants(s + "List")

After this minor modification everything worked exactly as expected.

Namespacin' Tom Out.


SharePoint CSharp XML LINQ

Related Blogs

Fixing MOSS Search Crawler issue for "The specified address was excluded..."
Using MOSS and WSS SharePoint Workflow to Resize Images in an Image Library
First Version of SharePoint Validator now available on CodePlex
Receiving null value when using SPFarm.Local on SharePoint 2010
What causes "Please wait while scripts are loaded..." in SharePoint


Currently no comments.

Add A Comment



Email Address: (not public, used to send notifications on further comments)


Enter the text above, except for the 1st and last character:

NerdyHearn - Latest tech news relating to C#, ASP.NET, SharePoint, PHP, general development, and more. SaveMySerials - Protect yourself from theft, fire, natural disasters and more by recording your serial numbers