jQuery 按 xml 中的相同节点删除或分组 dom
jQuery remove or group by same nodes in xml dom
我在 jQuery 和操纵 xml dom 方面相当陌生。所以如果我的问题不相关请原谅我。
我的样本XML:
<Urunler>
<Urun>
<ID>21955</ID>
<Mensei>Coke</Mensei> /* Contains Same Value */
</Urun>
<Urun>
<ID>21956</ID>
<Mensei>Coke</Mensei> /* Contains Same Value */
</Urun>
<Urunler>
我的Ajax调用和Jquery代码把它们显示成html dom:
$.ajax({
url: 'webservice/Resim/Stokkart.xml',
dataType: 'xml',
cache:true,
success: parseXml
});
function parseXml(xml) {
$(xml).find("Urun").filter(function () {
return $(this).find("ASTipNo").text() == categoryCode;
}).each(function () {
$('#product-list').append(
'<div class="product-name col-lg-12 col-md-12 col-sm-12 col-xs-12"></div>'+
'<h5 style="color:red;">' + $(this).find("Mensei").text() + '</h5>'+
'</div>'
);
});
}
我想要达到的目标;我想删除重复的 <Urun>
节点,如果它们在我的 xml 文档中具有相同的 <Mensei>
值,或者我可以将它们合并到一个节点中(例如 [=36= 中的 GROUP BY
])?
PS:我无法在服务器端执行此操作,因为我正在 cordova 上开发离线移动应用程序。
任何帮助将不胜感激。
var xmlString = "
<Urunler>
<Urun>
<ID>21955</ID>
<Mensei>Coke</Mensei>
</Urun>
<Urun>
<ID>21956</ID>
<Mensei>Coke</Mensei>
</Urun>
<Urun>
<ID>21957</ID>
<Mensei>Test</Mensei>
</Urun>
<Urunler>";
var menseiA = [];
var $xml = $(xmlString);
var $uruns = $xml.find("Urun");
//output xml
$xml.find("Urun").each(function () {
var id = $(this).find('ID').text();
var mensei = $(this).find('Mensei').text();
console.log(id + ':' + mensei);
});
console.log('=====================');
//finds and removes duplicates
$uruns.each(function () {
var mensei = $(this).find('Mensei').text();
if (jQuery.inArray(mensei, menseiA) !== -1) $(this).remove();
menseiA.push(mensei);
});
//output new xml
$xml.find("Urun").each(function () {
var id = $(this).find('ID').text();
var mensei = $(this).find('Mensei').text();
console.log(id + ':' + mensei);
});
我在 jQuery 和操纵 xml dom 方面相当陌生。所以如果我的问题不相关请原谅我。
我的样本XML:
<Urunler>
<Urun>
<ID>21955</ID>
<Mensei>Coke</Mensei> /* Contains Same Value */
</Urun>
<Urun>
<ID>21956</ID>
<Mensei>Coke</Mensei> /* Contains Same Value */
</Urun>
<Urunler>
我的Ajax调用和Jquery代码把它们显示成html dom:
$.ajax({
url: 'webservice/Resim/Stokkart.xml',
dataType: 'xml',
cache:true,
success: parseXml
});
function parseXml(xml) {
$(xml).find("Urun").filter(function () {
return $(this).find("ASTipNo").text() == categoryCode;
}).each(function () {
$('#product-list').append(
'<div class="product-name col-lg-12 col-md-12 col-sm-12 col-xs-12"></div>'+
'<h5 style="color:red;">' + $(this).find("Mensei").text() + '</h5>'+
'</div>'
);
});
}
我想要达到的目标;我想删除重复的 <Urun>
节点,如果它们在我的 xml 文档中具有相同的 <Mensei>
值,或者我可以将它们合并到一个节点中(例如 [=36= 中的 GROUP BY
])?
PS:我无法在服务器端执行此操作,因为我正在 cordova 上开发离线移动应用程序。
任何帮助将不胜感激。
var xmlString = "
<Urunler>
<Urun>
<ID>21955</ID>
<Mensei>Coke</Mensei>
</Urun>
<Urun>
<ID>21956</ID>
<Mensei>Coke</Mensei>
</Urun>
<Urun>
<ID>21957</ID>
<Mensei>Test</Mensei>
</Urun>
<Urunler>";
var menseiA = [];
var $xml = $(xmlString);
var $uruns = $xml.find("Urun");
//output xml
$xml.find("Urun").each(function () {
var id = $(this).find('ID').text();
var mensei = $(this).find('Mensei').text();
console.log(id + ':' + mensei);
});
console.log('=====================');
//finds and removes duplicates
$uruns.each(function () {
var mensei = $(this).find('Mensei').text();
if (jQuery.inArray(mensei, menseiA) !== -1) $(this).remove();
menseiA.push(mensei);
});
//output new xml
$xml.find("Urun").each(function () {
var id = $(this).find('ID').text();
var mensei = $(this).find('Mensei').text();
console.log(id + ':' + mensei);
});