/ / XMLを解析するためのNOTステートメントの作成 - jquery

XML-jqueryを解析するNOT文の作成

"Title"フィールドに "HIDE"または "CANCELED"という単語が含まれておらず、空白の "Indexed"フィールドが含まれていないすべての行を探してXMLを解析するステートメントを作成しようとしています。

これまでのところ、これを出発点として試してみました。 "HIDE"と空のIndexedフィールドを含むすべてを除外することを考えましたが、うまくいきません。

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

私はここにいるのにも近いですか?

回答:

回答№1は1

シーケンシャルアプローチはどうですか?

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

それを試してみてください:

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>

あなたはまた、 .filter、 このような:

$(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( /* ... */);