NerdyHearn
Home

IPhone SMS To Gmail

Consulting
Security Alerts

Blog
Software
Projects
Links
About
Contact

Blog
FriendFeed
Facebook
Flickr
Twitter
Toluu
Last.fm
Picasa
LinkedIn

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")
select
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 http://schemas.microsoft.com/sharepoint/soap/.

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 = "http://schemas.microsoft.com/sharepoint/soap/";

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.

Tags

SharePoint CSharp XML LINQ

Related Blogs

Reading Digital Signatures from InfoPath Forms in MOSS 2007 and WSS 3.0 Workflow
Using Ext JS in SharePoint... a tip
Using Data Protection Manager 2007 For Disaster Recovery on SharePoint
Fixing MOSS/WSS SharePoint errors with Alternate Access Mappings
Configuring ASP.NET (And SharePoint) to use SQL-based Sessions

Comments

Currently no comments.

Add A Comment

Name:


URL:


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


Comments:


Please enter the text from the image:



NerdyHearn - Latest tech news relating to C#, SharePoint, PHP, general development, and more. LiveNation Feed - Feeds of all your local artists, concerts, and events through your favorite RSS reader SaveMySerials - Protect yourself from theft, fire, natural disasters and more by recording your serial numbers Tweets2Mail - Backup and search your twitter stream from Gmail TimeSinceI - Track how long you have quit smoking, how long you have been married, or how long you have done anything.