我只是試圖使用GetUserProfileByName服務來獲取來自AD的用戶的一些細節。爲此,我選擇使用JavaScript。經過一點研究和大量修補之後,我設法連接到web服務併成功檢索數據。GetUserProfileByName屬性不一致
我用一個簡單的if語句來比較屬性的'name',以獲得我想要的特定值。
if(xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue == "Department")
{
property = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}
在這一點上,我開始注意到一些差異。我似乎沒有得到我在比較中指定的財產。例如,如果我指定「部門」,它會返回電子郵件。經過很多掙扎之後,我終於決定將所有「名稱」和「值」字段放在兩個數組中,沒有任何比較,並將它們彼此相鄰顯示。
for(i = 0; i < 13 ; i++)
{
description[i] = xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue;
elements[i] = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}
我從這次得到的結論是,這兩個領域顯然沒有相互匹配:
UserProfile_GUID: 65f017dc-b892-4afa-8730-5e8f73aa7b86
帳戶名: CAPETOWN \ ANEL5
姓: Abraham
SPS-Phonetic姓:內爾
名字:亞伯拉罕內爾
SPS-PhoneticLastName: 021 ### ####
PreferredName: CRS - 信息Sys系統&技術
SPS-PhoneticDisplayName:承包商
WorkPhone:承包商
部門: ANEL5
名稱: CN =亞伯拉罕內爾,OU =標準,OU =用戶,OU =最終用戶服務,DC = ###,DC = ###,DC = ###
SPS-JOBTITLE: ###@###.###
經理:開普敦市民中心裙樓座
任何想法,爲什麼會是這樣嗎?信息 -
falsefalseUserProfile_GUIDNotSetb21ec99c-2ad9-40a8-9d45-a3273c92ee5afalsefalseAccountNameNotSetCAPETOWN \ AHEYNESfalsefalseFirstNameNotSetAshleyfalsefalseSPS-PhoneticFirstNameNotSetfalsefalseLastNameNotSetHeynesfalsefalseSPS-PhoneticLastNameNotSetfalsefalsePreferredNameNotSetAshley HeynesfalsefalseSPS-PhoneticDisplayNameNotSetfalsefalseWorkPhoneNotSet021 400個#### falsefalseDepartmentNotSetCRS:嘗試與整個XML文檔解析字符串
結果系統& TechfalsefalseTitleNotSetAssistant專業人員職位-SPS-JobTitleNotSetAssistant專業人員職位管理人員NotSetCAPE TOWN \ DSISSINGfalsefalseAboutMeNotSetfalsefalsePersonalSpaceNotSetfalsefalsePictureURLNotSetfalsefalseUserNameNotSetAHEYNESfalsefalseQuickLinksNotSetfalsefalseWebSiteNotSetfalsefalsePublicSiteRedirectNotSetfalsefalseSPS-虛線-lineNotSetfalsefalseSPS-PeersNotSetfalsefalseSPS-ResponsibilityNotSetfalsefalseSPS-SipAddressNotSetfalsefalseSPS-MySiteUpgradeNotSetfalsefalseSPS-ProxyAddressesNotSetfalsefalseSPS-HireDateNotSetfalsefalseSPS-DisplayOrderNotSetfalsefalseSPS-ClaimIDNotSetfalsefalseSPS-ClaimProviderIDNotSetfalsefalseSPS-ClaimProviderTypeNotSetfalsefalseSPS-SavedAccountNameNotSetfalsefalseSPS-ResourceAccountNameNotSetfalsefalseSPS-ObjectExistsNotSetfalsefalseSPS-MasterAccountNameNotSetfalsefalseSPS-DistinguishedNameNotSetCN =阿什利Heynes,OU =開發人員,OU =用戶,OU =最終用戶服務,DC = ##,DC = ##,DC = ##falsefalseSPS-SourceObjectDNNotSetfalsefalseWorkEmailNotSet##.#####.##.##FalsefalseCellPhoneNotSetfalsefalseFaxNotSetfalsefalseOfficeNotSetCape Town Paul Sauer BuildingfalsefalseSPS-Location NotSetfalsefalseSPS-TimeZoneNotSetfalsefalseAssistantNotSetfalsefalseSPS-PastProjectsNotSetfalsefalseSPS-SkillsNotSetfalsefalseSPS-SchoolNotSetfalsefalseSPS-BirthdayNotSetfalsefalseSPS-StatusNotesNotSetfalsefalseSPS-InterestsNotSetfalsefalseSPS-EmailOptinNotSet
返回的XML文檔是什麼樣的?名稱和值是否在XML本身中正確排列?一種可能性是getElementsByTagName()函數不按它們在文檔中出現的順序返回標籤。另一種可能性是可能存在比Name元素更多或更少的Value元素,因此只有通過索引查找時纔會失去同步。我們需要看到XML。 – John
@John:我很抱歉,但我對SharePoint很陌生,並且使用Web服務等。我所做的就是使用JavaScript在頁面上調用Web服務,並將其寫入SharePoint網站上的空白網頁。這是否會創建一個XML並將其存儲在網站的某個位置?我可以指定Web服務來返回XML文檔嗎?當我處理這個問題時,有人懷疑有更多名稱元素是Value元素,但認爲他們將使用Name元素專門爲Value元素編制索引。在這我顯然是錯的。 – Carel
@John:我再次檢查了我的代碼,看到我實際上從Web服務中獲取了一個XML變量。我做了一些Google試圖用_var string = xmlNode將整個xml寫到屏幕上。xml; _這似乎返回了很多Value元素,並且沒有任何類型的XML格式。無論如何,我都將它附加到上面的問題。 – Carel