2010-08-10 154 views
3

我順利地查詢服務,如下代碼from hereSoapClient的查詢的SharePoint Web服務

<?php 
$authParams = array("login" => "username", "password" => "password"); 
$listName = "{2882F083-8890-4ADA-A1FC-39ED1D63D825}"; 
$rowLimit = '150'; 
$wsdl = "http://localhost:89/list.wsdl"; 
$soapClient = new SoapClient($wsdl, $authParams); 
$params = array('listName' => $listName, 'rowLimit' => $rowLimit); 
$rawXMLresponse = null; 
try{ 
    $rawXMLresponse = $soapClient->GetListItems($params)->GetListItemsResult->any; 
} 
catch(SoapFault $fault){ 
    echo 'Fault code: '.$fault->faultcode; 
    echo 'Fault string: '.$fault->faultstring; 
} 
echo '<pre>' . $rawXMLresponse . '</pre>'; 

$dom = new DOMDocument(); 
$dom->loadXML($rawXMLresponse); 
$results = $dom->getElementsByTagNameNS("#RowsetSchema", "*"); 

foreach($results as $result){ 
    echo $result->getAttribute("ows_LinkTitle")."<br/>"; 
    echo $result->getAttribute("ows_Body")."<br/>"; 
} 
unset($soapClient); 
?> 

但是屬性ows_Body犯規顯示,可能是因爲屬性附加傷害是不是在$ rawXMLresponse牽強。我如何在迴應中得到這些信息?如果GetListItems需要額外的查詢參數,我該如何格式化?

下面

就是從rawXMLresponse返回

<pre><listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"><rs:data ItemCount="3"><z:row ows_Attachments="0" ows_LinkTitle="Hypothermia and Jellyfish" ows_Modified="2010-08-03 09:43:56" ows_Notice_x0020_Type="Calendar" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Hypothermia and Jellyfish" ows_ID="1" ows_owshiddenversion="2" ows_UniqueId="1;#{B90ECA8C-6FBB-476D-BF67-A05B07268591}" ows_FSObjType="1;#0" ows_Created_x0020_Date="1;#2010-07-29 09:38:52" ows_Created="2010-07-29 09:38:52" ows_FileLeafRef="1;#1_.000" ows_FileRef="1;#Lists/kk3/1_.000"/><z:row ows_Attachments="0" ows_LinkTitle="The Hunting of the Snark" ows_Modified="2010-08-03 09:43:42" ows_Notice_x0020_Type="Public" ows_MetaInfo="2;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="The Hunting of the Snark" ows_ID="2" ows_owshiddenversion="2" ows_UniqueId="2;#{F070D967-97F1-40DF-803B-EF50424D205B}" ows_FSObjType="2;#0" ows_Created_x0020_Date="2;#2010-07-29 09:39:57" ows_Created="2010-07-29 09:39:57" ows_FileLeafRef="2;#2_.000" ows_FileRef="2;#Lists/kk3/2_.000"/><z:row ows_Attachments="0" ows_LinkTitle="Never undersell yourself" ows_Modified="2010-08-03 09:43:29" ows_Notice_x0020_Type="Public" ows_MetaInfo="3;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Never undersell yourself" ows_ID="3" ows_owshiddenversion="3" ows_UniqueId="3;#{4DBEC63E-E25F-4580-B5D8-590C584A6E95}" ows_FSObjType="3;#0" ows_Created_x0020_Date="3;#2010-07-29 09:40:32" ows_Created="2010-07-29 09:40:32" ows_FileLeafRef="3;#3_.000" ows_FileRef="3;#Lists/kk3/3_.000"/></rs:data></listitems></pre> 

回答

1

嘗試添加ViewFields參數查詢。這使您可以指定在查詢中以及按什麼順序返回哪些字段。

viewFieldsGetListItems元素的子元素:

<viewFields> 
    <ViewFields> 
    <FieldRef Name="LinkTitle" /> 
    <FieldRef Name="Body" /> 
    </ViewFields> 
</viewFields> 

根據你給的例子,我在你會之後的列名的猜測;您可能需要調整SharePoint實際上在內部調用這些列。

ows_前綴被添加到列名稱中,因此除非從結果XML中檢索,否則不會以該格式對其進行尋址。

+0

我認爲你的權利,我前幾天修復了它,並且用一個額外的查詢和與你建議相似的viewfileds參數 – 2010-08-16 16:08:33