/ / Erstellen einer NOT-Anweisung zum Analysieren von XML-Jquery

Erstellen einer NOT-Anweisung zum Parsen von XML-Jquery

Ich versuche, eine Anweisung zu erstellen, die mein XML durchsucht und nach allen Zeilen sucht, die nicht die Wörter "HIDE" oder "CANCELED" im Feld "Title" enthalten und kein leeres "indiziertes" Feld haben.

Bisher habe ich dies als Ausgangspunkt ausprobiert, was meiner Meinung nach alles herausfiltern würde, das "HIDE" und ein leeres indiziertes Feld enthält, aber es funktioniert nicht.

$(xml).find("Qry1:not(Title:contains("HIDE"), Indexed:contains(""))").each(function(){

Bin ich schon fast nahe dran?

Antworten:

1 für die Antwort № 1

Wie wäre es mit einem sequentiellen Ansatz?

$(xml).find("Qry1")
.not(":has(Title:contains("HIDE"))")
.not(":has(Title:contains("CANCELLED"))")
.not(":has(Indexed:empty)")
.each( /* ... */);

Versuch es:

var xml = "<root>
<Qry1>
<Title>HIDE</Title>
<Indexed>1</Indexed>
</Qry1>
<Qry1>
<Title>CANCELLED</Title>
<Indexed>1</Indexed>
</Qry1>
<Qry1>
<Title>I"m not indexed</Title>
<Indexed></Indexed>
</Qry1>
<Qry1>
<Title>Found Me!</Title>
<Indexed>1</Indexed>
</Qry1>
</root>";

$(xml).find("Qry1")
.not(":has(Title:contains("HIDE"))")
.not(":has(Title:contains("CANCELLED"))")
.not(":has(Indexed:empty)")
.each(function () {
var title = $(this).find("Title").text();
$("<div>", {text: title}).appendTo("#target");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="target"></div>

Du könntest auch benutzen .filter, so was:

$(xml).find("Qry1")
.filter(function () {
var $this = $(this),
title = $this.find("Title").text(),
indexed = $this.find("Indexed").text();

return !(title === "HIDE" || title === "CANCELLED" || !indexed);
})
.each( /* ... */);