您好我正在尝试使用javascript从客户端的sharepoint获取用户配置文件属性。但是我没有在xml中获取节点的值。 如何得到它们。 xml看起来像:
如何使用xpath
获取xml中节点的属性值在此,我想获取<name>
代码<Name>AccountName</Name>
之间和名称代码
想得到值= 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>
请帮帮我。
答案 0 :(得分: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 Services检索用户配置文件,我建议使用SPServices library,它在使用JavaScript中的 SharePoint Web Services 时隐藏(几乎)所有错综复杂的内容。以下示例演示了如何使用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|username@contoso.onmicrosoft.com';
getUserProfile(loginName,function(info){
console.log(info);
});
答案 1 :(得分: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