4

GetUserProfileByName サービスを使用して、AD からユーザーの詳細を取得しようとしているだけです。このために、javascript を使用することにしました。少しの調査とかなりの調整を行った後、なんとか Web サービスに接続し、データを正常に取得することができました。

必要な特定の値を取得するために、単純な if ステートメントを使用してプロパティの「名前」を比較しました。

if(xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue == "Department")
{
    property = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}

この時点で、いくつかの不一致に気付き始めました。比較で指定したプロパティを取得していないようです。たとえば、「Department」を指定すると、メールが返されます。多くの苦労の末、最終的にすべての「名前」フィールドと「値」フィールドを比較せずに2つの配列にドロップし、それらを並べて表示することにしました。

for(i = 0; i < 13 ; i++)
{
    description[i] = xmlDoc.getElementsByTagName("Name")[i].childNodes[0].nodeValue;
    elements[i] = xmlDoc.getElementsByTagName("Value")[i].childNodes[0].nodeValue;
}

ここから得た結論は、2 つのフィールドが明らかに一致しないということでした。

UserProfile_GUID: 65f017dc-b892-4afa-8730-5e8f73aa7b86
AccountName: CAPETOWN\ANEL5
FirstName: Abraham
SPS-PhoneticFirstName: Nel
LastName: Abraham Nel
SPS-PhoneticLastName: 021 ### ####
PreferredName: CRS - Info Sys & Tech
SPS- PhoneticDisplayName: Contractor
WorkPhone: Contractor
Department: ANEL5
Title: CN=Abraham Nel,OU=Standard,OU=Users,OU=End-User Services,DC=###,DC=###,DC=###
SPS-役職: ###@###.###
マネージャー:ケープタウン シビック センター ポディウム ブロック

なぜこれが起こっているのでしょうか?

XML ドキュメント全体を文字列に解析しようとした結果:

falsefalseUserProfile_GUIDNotSetb21ec99c-2ad9-40a8-9d45-a3273c92ee5afalsefalseAccountNameNotSetCAPETOWN\AHEYNESfalsefalseFirstNameNotSetAshleyfalsefalseSPS-PhoneticFirstNameNotSetfalsefalseLastNameNotSetHeynesfalsefalseSPS-PhoneticLastNameNotSetfalsefalsePreferredNameNotSetAshley HeynesfalsefalseSPS-PhoneticDisplayNameNotSetfalsefalseWorkPhoneNotSet021 400 ####falsefalseDepartmentNotSetCRS - Info Sys &TechfalsefalseTitleNotSetAssistant Professional OfficerfalsefalseSPS-JobTitleNotSetAssistant ProfessionalOfficerfalsefalseManagerNotSetCAPETOWN\DSISSINGfalsefalseAboutMeNotSetfalsefalsePersonalSpaceNotSetfalsefalsePictureURLNotSetfalsefalseUserNameNotSetAHEYNESfalsefalseQuickLinksNotSetfalsefalseWebSiteNotSetfalsefalsePublicSiteRedirectNotSetfalsefalseSPS-Dotted-lineNotSetfalsefalseSPS-PeersNotSetfalsefalseSPS-ResponsibilityNotSetfalsefalseSPS-SipAddressNotSetfalsefalseSPS-MySiteUpgradeNotSetfalsefalseSPS-ProxyAddressesNotSetfalsefalseSPS-HireDateNotSetfalsefalseSPS-DisplayOrderNotSetfalsefalseSPS-ClaimIDNotSetfalsefalseSPS-ClaimProviderIDNotSetfalsefalseSPS-ClaimProviderTypeNotSetfalsefalseSPS-SavedAccountNameNotSetfalsefalseSPS-ResourceAccountNameNotSetfalsefalseSPS-ObjectExistsNotSetfalsefalseSPS-MasterAccountNameNotSetfalsefalseSPS-DistinguishedNameNotSetCN=Ashley Heynes,OU=Developers,OU=Users,OU =エンドユーザー サービス,DC=##,DC=##,DC=##falsefalseSPS-SourceObjectDNNotSetfalsefalseWorkEmailNotSet##.##@##.##.##falsefalseCellPhoneNotSetfalsefalseFaxNotSetfalsefalseOfficeNotSetCape Town Paul Sauer BuildingfalsefalseSPS-LocationNotSetfalsefalseSPS-TimeZoneNotSetfalsefalseAssistantNotSetfalsefalseSPS-PastProjectsNotSetfalsefalseSPS-SkillsNotSetfalsefalseSPS-SchoolNotSetfalsefalseSPS-BirthdayNotSetfalsefalseSPS-StatusNotesNotSetfalsefalseSPS-InterestsNotSetfalsefalseSPS-EmailOptinNotSet##falsefalseCellPhoneNotSetfalsefalseFaxNotSetfalsefalseOfficeNotSetCape Town Paul Sauer BuildingfalsefalseSPS-LocationNotSetfalsefalseSPS-TimeZoneNotSetfalsefalseAssistantNotSetfalsefalseSPS-PastProjectsNotSetfalsefalseSPS-SkillsNotSetfalsefalseSPS-SchoolNotSetfalsefalseSPS-BirthdayNotSetfalsefalseSPS-StatusNotesNotSetfalsefalseSPS-InterestsNotSetfalsefalseSPS-EmailOptinNotSet##falsefalseCellPhoneNotSetfalsefalseFaxNotSetfalsefalseOfficeNotSetCape Town Paul Sauer BuildingfalsefalseSPS-LocationNotSetfalsefalseSPS-TimeZoneNotSetfalsefalseAssistantNotSetfalsefalseSPS-PastProjectsNotSetfalsefalseSPS-SkillsNotSetfalsefalseSPS-SchoolNotSetfalsefalseSPS-BirthdayNotSetfalsefalseSPS-StatusNotesNotSetfalsefalseSPS-InterestsNotSetfalsefalseSPS-EmailOptinNotSet

4

1 に答える 1

1

検索したところ、XML 構造は使用しているロジックに適していないようです。XML は次のようになります。

PropertyData*
    Name
    Values
        ValueData
            Value

それぞれのカーディナリティについてはわかりませんが、繰り返し処理してから、そのブロック内のand (おそらく複数の)要素をxmlDoc.getElementsByTagName('PropertyData')見つける方が安全だと思います。NameValue

var properties = xmlDoc.getElementsByTagName("PropertyData");

for (var i = 0, item; item = properties[i]; ++i) {
    // search for Name and Value inside here
}

アップデート

FirstName:AbrahamNelの複数の値が原因である可能性が最も高いですAbraham Nel

于 2012-11-26T08:12:41.190 に答える