我正在查询Microsoft Office SharePoint Server搜索服务,以将一些结果写入Web部件。我的查询工作正常但是在通过JQuery解析xml响应时遇到了一些麻烦。
以下是XML响应:
<document>
<properties>
<Property>
<Name>p1</Name>
<Type>String</Type>
<Value>blue</Value>
</Property>
<Property>
<Name>title</Name>
<Type>string</Type>
<Value>titreA</Value>
</Property>
</properties>
</document>
<document>
<properties>
<Property>
<Name>p1</Name>
<Type>String</Type>
<Value>blue</Value>
</Property>
<Property>
<Name>title</Name>
<Type>string</Type>
<Value>titreB</Value>
</Property>
</properties>
</document>
<document>
<properties>
<Property>
<Name>p1</Name>
<Type>String</Type>
<Value>green</Value>
</Property>
<Property>
<Name>title</Name>
<Type>string</Type>
<Value>titreC</Value>
</Property>
</properties>
</document>
<document>
<properties>
<Property>
<Name>p1</Name>
<Type>String</Type>
<Value>red</Value>
</Property>
<Property>
<Name>title</Name>
<Type>string</Type>
<Value>titreD</Value>
</Property>
</properties>
</document>
如何检索p1值和此值的出现次数? 像这样:蓝色(2),绿色(1),红色(1)
答案 0 :(得分:2)
可以像使用HTML一样使用jQuery的方法“解析”XML数据。假设data
是XML数据。
var name = 'p1';
$data = $(data);
$p1 = $data.find('Name:contains("'+name+'")').parent('Property');
p1Value = $p1.map(function(i,v){
return $(v).children('Value').text();
}).get();
alert(p1Value);
p1Value是一个名为“p1”的值数组。
p1Value[0]
等于'蓝色'。
如果您还想要出现次数,可以这样做。
var name = 'p1';
$data = $(data);
$p1 = $data.find('Name:contains("'+name+'")').parent('Property');
p1Values = {};
$p1.each(function(i,v){
var val = $(v).children('Value').text();
if(p1Values.hasOwnProperty(val)){
p1Values[val]++;
}
else{
p1Values[val] = 1;
}
});
p1Values是一个对象,其值为属性名称,出现为属性值。
p1Value['blue']
等于2.
答案 1 :(得分:0)
假设您有类似
的内容.ajax(
// calling code here
success: function(data, status, xhr) {
var jqData = $(data);
var countMap = {};
jqData.find("Value").each(function() {
// filter for only P1
var jqThis = $(this);
if(jqThis.parent().find("Name").text == "p1") {
if(countMap[jqThis.text]) {
countMap[jqThix.text]++;
} else {
countMap[jqThis.text] = 1;
}
}
});
// From here countMap should contain the value in Value for each p1 as a key
// and a count of occurrences as a value
}
);