在 Javascript/JQuery 中搜索 XML 字符串

Searching XML String in Javascript/JQuery

本文关键字:搜索 XML 字符串 JQuery Javascript      更新时间:2023-09-26

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

结构是这样的:

  <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>

如果我想返回一个"记录"数组,其中状态="未开始"和优先级="中"....我如何使用 JavaScript 或 JQuery 来做到这一点?

为了清楚起见,我需要符合条件的每条记录的整条记录。

提前谢谢。

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

然后,您可以像往常一样访问返回文档的 DOM。

例:

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))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

请注意,原始 XML project_phase中有拼写错误