使用Javascript / JQuery过滤XML结果

时间:2015-04-20 00:42:48

标签: javascript jquery xml parsing

好的,我正在努力解决这个问题......

我有一个页面可以提取一堆XML数据并且工作正常。

然后我决定在此页面和其他页面上添加一个搜索框,使该页面仅显示我的搜索结果。

我知道页面正在接收表单数据,并且它正确地存储在变量中。

我想使用这些变量来过滤我的xml文件的结果。

我现在拥有的是什么;

var x=xmlDoc.getElementsByTagName("ResidentialProperty");
mySearch = location.search.substr(1).split("&")
function getFromSearch() {
  var x = 0
  mySearch = location.search.substr(1).split("&")
  for (x=0;x<=mySearch.length;x++) {
    eval("document.forms.myNewForm."+mySearch[x])
  }
}
document.write(mySearch);
for (i=0;i<x.length;i++) { 
  var item = x[i];
  document.write("<div class='property'><div class='list_name'>");
  if(item !== undefined) {
      var itemElements = item.getElementsByTagName("StreetNumber");
      if(itemElements.length > 0) {
          if(itemElements[0].childNodes.length > 0) {
              document.write(x[i].getElementsByTagName("StreetNumber")[0].childNodes[0].nodeValue+' ');
          }
      }
  }
  if(item !== undefined) {
      var itemElements = item.getElementsByTagName("StreetDirPrefix");
      if(itemElements.length > 0) {
          if(itemElements[0].childNodes.length > 0) {
              document.write(x[i].getElementsByTagName("StreetDirPrefix")[0].childNodes[0].nodeValue+' ');
          }
      }
  }

这一切都有效但每次我尝试过滤它都会停止所有返回的结果。

请帮忙。

1 个答案:

答案 0 :(得分:1)

可能值得使用像jQuery这样的库来解决这个问题。

e.g。 (在未经任何测试的情况下对代码进行了尝试)

var xml = $(xmlDoc);
var properties = xml.find('ResidentialProperty');

mySearch = location.search.substr(1).split("&");

var results = properties.filter(function() {
    return $(this).val().substr(0, mysearch.length) === mySearch;
}); 

console.log(results);

参考

http://www.jquerybyexample.net/2013/02/jquery-parse-json-xml-html.html

https://api.jquery.com/find/

http://api.jquery.com/filter/