使用Javascript搜索XML文件,然后根据匹配的字符串检索特定属性

时间:2012-05-02 06:58:16

标签: javascript xml search

我已经浏览了整个网站,使用从html输入字段中获取的值搜索XML文件的各种方法,并设法执行此操作,但是当它找到匹配时,我能做的就是显示消息说“匹配发现!”。

我想要做的是能够使用放入html输入字段的搜索字符串值搜索XML文件,然后一旦找到匹配,就会拉出该特定节点的其余信息 - 就像所有属性。

我的XML文件示例:

<dvdcatalogue>
<dvd year="1979" rating="18" director="ridley scott">Alien</dvd>
</dvdcatalogue>

电影的标题是“异形”,因此它将成为搜索字符串。

有什么想法可以做到这一点?我猜它可能与加载到javascript数组有关。只是为了让任何回答的人都知道我到目前为止看到的所有例子都没有明确说明能够实现这一目标的确切代码。

提前感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

你也可以使用jQuery来完成这项任务,就像我在this fiddle中所做的那样(虽然XPath会更正确地做到这一点^^)

var xml = $("<dvdcatalogue>" +
               "<dvd year=\"1979\" rating=\"18\" director=\"ridley scott\">Alien</dvd>" +
               "<dvd year=\"1986\" rating=\"18\" director=\"ridley scott\">Aliens (aka. Alien 2)</dvd>" +
               "<dvd year=\"1984\" rating=\"18\" director=\"James Cameron\">Terminator</dvd>" +
               "</dvdcatalogue>"),
       search = "Alien",
       result = $("#result"),
       nodes;

       nodes = xml.find("dvd:contains('" + search + "')");

    if (nodes.length > 0) {
        nodes.each(function(i, e) {
            result.append("<li><b>" + e.firstChild.nodeValue + "</b> by " + e.getAttribute("director") + "</li>");
        });
    }