在很多情況下,我們希望外部的應用可以得到位於SharePoint文檔庫中的文檔信息。這時不妨試試通過調用WSS的Web服務來完成。
下面的示例代碼完成了獲取ID爲1的文檔(在文檔庫TestDL1中)的相對URL 和作者信息。
那ID是從哪裏獲取的呢?我想大家一定有很多方法啦。比如,文檔庫事件。
LabDb.ListslistService=newLabDb.Lists();
listService.Credentials=System.Net.CredentialCache.DefaultCredentials;
XmlDocumenttxd=newXmlDocument();
txd.LoadXml("<Query><Where><Eq><FieldRefName="ID"/><ValueType="Counter">1</Value></Eq></Where></Query>");
XmlNodendQuery=txd.SelectSingleNode("Query");
txd.LoadXml("<ViewFields><FieldRefName="ID"/><FieldRefName="FileRef"/><FieldRefName="Author"/></ViewFields>");
XmlNodendViewFields=txd.SelectSingleNode("ViewFields");
stringFileRef="";
stringAuthor="";
try
{
XmlNodendReturn=listService.GetListItems("TestDL1",null,ndQuery,ndViewFields,null,null);
XmlNamespaceManagernsmgr=newXmlNamespaceManager(ndReturn.OwnerDocument.NameTable);
nsmgr.AddNamespace("s","uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882");
nsmgr.AddNamespace("dt","uuid:C2F41010-65B3-11d1-A29F-00AA00C14882");
nsmgr.AddNamespace("rs","urn:schemas-microsoft-com:rowset");
nsmgr.AddNamespace("z","#RowsetSchema");
FileRef=ndReturn.SelectSingleNode("rs:data/z:row",nsmgr).Attributes["ows_FileRef"].Value;
FileRef=FileRef.Substring(FileRef.IndexOf("#")+1);
Author=ndReturn.SelectSingleNode("rs:data/z:row",nsmgr).Attributes["ows_Author"].Value;
Author=Author.Substring(Author.IndexOf("#")+1);
Console.WriteLine(FileRef);
Console.WriteLine(Author);
}
catch{}
其中的關鍵是:
1、Query的編寫
2、ViewFields的編寫(可選,也可以給null,這樣將顯示所有)
3、XmlNamespace的添加