我试图构建一个语句,该语句将解析我的XML,查找所有不包含单词' HIDE'或者'取消'在标题'字段,并没有空白的索引'字段。
到目前为止,我已经尝试过这个作为起点,我认为这会过滤掉包含' HIDE'和一个空的索引字段,但它不起作用。
$(xml).find("Qry1:not(Title:contains('HIDE'), Indexed:contains(''))").each(function(){
我是否接近于此?
答案 0 :(得分: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");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="target"></div>
&#13;
您也可以使用.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( /* ... */);