在Javascript / JQuery中搜索XML字符串

时间:2016-01-16 20:48:11

标签: javascript jquery xml

我需要一种方法来搜索XML String并返回一个包含"记录"的数组。符合多个搜索条件的元素。

结构如下:

  <record>
     <project_name>Deploy Document Management</project_name>
     <project_phase>Design</porject_phase>
     <status>Not Started</status>
     <priority>Medium</priority>
  </record>
  <record>
     <project_name>Do Something Else</project_name>
     <project_phase>Design</porject_phase>
     <status>Not Started</status>
     <priority>Medium</priority>   
  </record>

如果我想返回一组&#34;记录&#34;其中status =&#34;未开始&#34;和priority =&#34; Medium&#34; ....我将如何使用javascript或JQuery?

要清楚,我需要符合条件的每条记录的整个记录​​。

提前致谢。

1 个答案:

答案 0 :(得分:1)

一个良好的开端是解析XML,例如使用jQuery.parseXML()

然后,您可以像往常一样

访问返回文档的DOM

示例:

&#13;
&#13;
var xml = '<xml><record><project_name>Deploy Document Management</project_name><project_phase>Design</project_phase><status>Not Started</status><priority>Medium</priority></record><record><project_name>Do Something Else</project_name><project_phase>Design</project_phase><status>Not Started</status><priority>Low</priority></record></xml>'

var xmlDoc = $.parseXML(xml)
var $xml = $(xmlDoc)
var $records = $xml.find("record").filter(function() {
  return $(this).find("status").text() == "Not Started" && 
    $(this).find("priority").text() == "Medium"
});

// $records already holds all Elements as an Array, but you cold get the texts like this:
var records = []
$records.each(function() {
  // do your thing
  records.push($(this).text())
})

document.write(JSON.stringify(records))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

请注意,您的原始XML project_phase

中存在拼写错误