2015-05-14 64 views
1

您好我想獲得從SharePoint在客戶端與javascript.But用戶配置文件的屬性,我沒有得到的XML節點的值的XPath獲得XML節點的屬性值。 如何讓他們。 XML將看起來像爲:如何使用JavaScript中

如何獲得使用XPath

在這裏,我想這是<name>標籤<Name>AccountName</Name>之間標籤

名稱的屬性值在XML節點的值來獲取值= ABC會是怎樣的XPath表達式

請幫

<?xml version="1.0" encoding="utf-8" ?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
    <GetUserProfileByNameResponse xmlns="http://microsoft.com/webservices/SharePointPortalServer/UserProfileService"> 
     <GetUserProfileByNameResult> 
     <Pro pertyData> 
      <IsPrivacyChanged>false</IsPrivacyChanged> 
      <IsValueChanged>false</IsValueChanged> 
      <Name>UserProfile_GUID</N ame> 
      <Privacy>NotSet</Privacy> 
      <Values> 
       <ValueData> 
       <Value xmlns:q1="http://microsoft.com/wsdl/types/" xsi:type="q1:guid">8ed84415-7330-4857-a7d2- d797d71c439f 

       </Value> 
       </ValueData> 
      </Values> 
      </PropertyData> 
      <PropertyData> 
       <IsPrivacyChanged>false</IsPrivacyChanged> 
       <Is ValueChanged>false</IsValueChanged> 
       <Name>AccountName</Name> 
       <Privacy>NotSet</Privacy> 
       <Values> 
        <ValueData> 
        <Value xsi:type="xsd:string">abc 

        </Value> 
        </ValueData> 
       </Values> 
      </PropertyData> 
     </GetUserProfileByNameResult> 
    </GetUserProfileByNameResponse> 
    </ soap:Body> 
</soap:Envelope> 

請幫我。

+1

發表一些javascript細節概述顯示你嘗試過什麼等等遠.. – har07

回答

1
var propertyData = $(responseXML).find("PropertyData").filter(function(e){ 
    return $(this).find("Name").text() == "AccountName"; 
}); 
var value = propertyData.length > 0 ? propertyData.find('Value').text() : ''; 

既然你試圖檢索通過SharePoint Web服務的用戶配置文件,我會建議利用SPServices library,它的SharePoint Web服務從JavaScript工作時隱藏(幾乎)所有的複雜性。下面的例子演示瞭如何使用GetUserProfileByName method檢索用戶的個人資料和處理結果:

function getUserProfile(accountName,completeFn) { 
    var userInfo = {}; 
    $().SPServices({ 
    AccountName: accountName, 
    operation: 'GetUserProfileByName', 
    completefunc: function (xData, Status) { 
     $(xData.responseXML).SPFilterNode("PropertyData").each(function() { 
     userInfo[$(this).find("Name").text()] = $(this).find("Value").text(); 
     }); 
     completeFn(userInfo); 
    } 
    }); 
} 

var loginName = 'i:0#.f|membership|[email protected]'; 
getUserProfile(loginName,function(info){ 
    console.log(info);  
}); 
0

您必須通過從SPServices返回的XML節點遍歷。我寫了一個獲取所需用戶配置文件屬性的函數。

function getUPValue(x, p) { 
    var thisValue = $(x).SPFilterNode("PropertyData").filter(function() { 
    return $(this).find("Name").text() == p; 
    }).find("Values").text(); 
    return thisValue; 
} 

進一步查詢,你只需要像下面調用用戶屬性,

getUPValue(xData.responseXML, "WorkEmail"); 

這些文章提供了過來here