在内部文本中列出所有带有匹配字符串的xml节点

时间:2019-03-17 01:28:27

标签: javascript jquery xml

我正在尝试为我的网站创建一个搜索框,其中包含XML格式的数据。

如何在xml对象的所有“ v”节点中进行搜索,并返回与搜索字符串至少具有一个匹配项的所有“ v”节点?

换句话说,如果用户在文本输入字段中输入“ coffee”,我想返回其中包含“ coffee”一词的每个节点的内容。

这是我微不足道的尝试:

<b n="myBook">
    <c n="1">
      <v n="1">I contain the word coffee.</v>
      <v n="2">I only have tea.</v>
    </c>
</b>
<b n="myBook2">
    <c n="1">
      <v n="1">I too contain the word coffee.</v>
      <v n="2">I too only have tea.</v>
    </c>
    <c n="2">
      <v n="1">I'm afraid I too contain the word coffee.</v>
      <v n="2">I'm happy to say I too only have tea.</v>
    </c>
</b>


function handleSearch() {
            
            var inputValue = $('.searchField').val();

            //handle search
            var searchResult = $(myxml).find('v').filter(function() { return $(this).text() == inputValue });
            console.log(searchResult);
            //would like to append the results to a div while wrapping them in paragraph tags 


  }
});

 $('.searchField').change(function() {
            
            handleSearch();
   
        });
<input type="text" class="searchField" size="30" placeholder="Search..">
                <button type="submit">
                    <img class="submitSearch" src="search.png">
                </button>

1 个答案:

答案 0 :(得分:0)

由于您想要文本包含“包含”一定值的节点,因此您可能需要更改过滤器功能以检查以下内容:

$(this).text().toLowerCase().indexOf(inputValue) > -1

如果您希望搜索不区分大小写,则还可以将节点文本和搜索inputValue都更改为小写。

var inputValue = $('.searchField').val().toLowerCase();