Using owssvr.dll to retrieve List data in XML format

Owssvr.dll is a traditional Remote Procedure Call method to remotely invoke functions in SharePoint. It can be used to retrieve data from SharePoint list as well.

syntax:
http://sharepoint.com/_vti_bin/owssvr.dll?Cmd=Display&List=<<LIST-GUID>>&XMLDATA=TRUE

E.g.
https://intranet.sharepoint.com/_vti_bin/owssvr.dll?Cmd=Display&List={6685db48-013f-4934-8147-b7a6014eccc9}&XMLDATA=TRUE

Other options:
Filter &  View
Append -  FilterField1=<<Field-Internal-Name>>&FilterValue1=<<Value-of-the-field>>
e.g:
FilterField1=Domain&FilterValue1=Sales
View={ViewGuid}


How to get the List GUID?
Go to List settings >> right click "Audience targeting settings" Say "Copy Shortcut". Now you will get something like: https://sharepoint.com/sites/Test/_layouts/ListEnableTargeting.aspx?List={6685db48-013f-4934-8147-b7a6014eccc9}
Highlighted is the GUID.

Output:
Using owssvr.dll to retrieve List data in XML format

Once you get the XML you can use it wherever required.
E.g.:
<script type="text/javascript">
function GetListData()
{
// Get the data from SharePoint List
var reqstring ="http://SharePoint.com/_vti_bin/owssvr.dll?Cmd=Display&List={6685db48-013f-4934-8147-b7a6014eccc9}&XMLDATA=TRUE";
var req = new ActiveXObject("MSXML2.XMLHTTP");
req.open("GET",reqstring,false);
req.send();

//Load response in XML Document
var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.loadXML(req.responseText);
 //Traverse inside doc to retrieve values
 alert(data);
}
</script>

SharePoint Online: Get List data in XML format using Owssvr.dll
You can also PowerShell to retrieve List data in XML format from OWSSvr.dll
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking

#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName = "Contacts"
$ViewName = "All Items"

#Get Credentials to connect
$Cred= Get-Credential

Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

    #Get Necessary Objects
    $Web = $Ctx.Web
    $List = $Web.Lists.GetByTitle($ListName)
    $View = $List.Views.getByTitle($ViewName)
    $Ctx.Load($Web)
    $Ctx.Load($List)
    $Ctx.Load($View)
    $Ctx.ExecuteQuery()

    #Request XML data throgh RPC
    $URL = "{0}/_vti_bin/owssvr.dll?Cmd=Display&List={1}&View={2}&Query=*&XMLDATA=TRUE" -f $Web.Url, $List.ID, $view.ID
    $WebClient = New-Object System.Net.WebClient 
    $WebClient.Credentials =  New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
    $WebClient.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f")
    $XML = $WebClient.DownloadString($URL)
    $WebClient.Dispose()
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

More Examples:
http://msdn.microsoft.com/en-us/library/ms478653.aspx
http://msdn.microsoft.com/en-us/library/ms416599.aspx
http://blogs.msdn.com/b/infopath/archive/2007/01/15/populating-form-data-from-sharepoint-list-views.aspx
http://sharepointfordeveloper.blogspot.co.uk/2012/03/sharepoint-rpc-protocols-examples-using.html

5 comments:

  1. oh! Good man! Thanks a lot

    ReplyDelete
  2. This code doesnt work if the list view threshold of 5000 is reached. In SharePoint Online we do not have the option to increase the list view threshold. Is there any way we can make this code work?

    ReplyDelete
  3. What do we do if the list view threshold for a SharePoint Online list is reached. We do not have the ability to increase the list view threshold. Even though the view we are accessing through the code has very less items, but we still get an error while executing this code. Your inputs will be very helpful.

    ReplyDelete
    Replies
    1. Other than adding indexed columns and Filters to restrict number of rows to < 5000, I don't find any other ways. However, You can use PowerShell to Query-export list items > 5000. SharePoint Online: How to Get All List Items from Large Lists ( >5000 Items)

      Delete

Please Login and comment to get your questions answered!

Powered by Blogger.