Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript从XML文件中搜索和输出数据_Javascript_Jquery_Html_Xml_Search - Fatal编程技术网

使用JavaScript从XML文件中搜索和输出数据

使用JavaScript从XML文件中搜索和输出数据,javascript,jquery,html,xml,search,Javascript,Jquery,Html,Xml,Search,我有一组数据,它们是保存在XML文件中的地名和位置,如下所示: <row> <cell>name</cell> <cell>location</cell> </row> 名称 位置 数据从电子表格中提取,然后保存为XML格式。现在在XML文件中有数千行,在第一个例子中,我们看到的是5k+。我是否可以基于用户输入,使用JavaScript搜索这个XML文件,然后在HTML页面上显示这个输出?我还必须支持IE6(这是一个大

我有一组数据,它们是保存在XML文件中的地名和位置,如下所示:

<row>
<cell>name</cell>
<cell>location</cell>
</row>

名称
位置
数据从电子表格中提取,然后保存为XML格式。现在在XML文件中有数千行,在第一个例子中,我们看到的是5k+。我是否可以基于用户输入,使用JavaScript搜索这个XML文件,然后在HTML页面上显示这个输出?我还必须支持IE6(这是一个大问题)

在XML方面我是个十足的noob,但我会做一些JavaScript和JQuery!有没有更简单的方法?我没有选择使用服务器端语言,也不能使用数据库(我知道很弱)


提前感谢。

如果您将XML作为字符串,那么您应该能够将其包装到jQuery对象中,如下所示:

var $myXML = $(myXMLString);
现在可以使用jQuery方法进行遍历和搜索。例如,在单元格中搜索“smith”:

var $matches = $myXML.find("cell:contains('smith')"); //'smith' being your user input
您的XML似乎没有任何元数据,因此我们不能将搜索限制在特定字段。例如,如果您的单元格具有“字段名”:

<row>
<cell fieldname='name'>name</cell>
<cell fieldname='location'>location</cell>
</row>
参见上的示例

编辑

我已经让这更复杂了一点:

var $myXML = $(myXMLString);

var $rowMatches = $myXML.filter(function(){
    var $cellMatches = $(this).find("cell:contains('smith')");
    return $cellMatches.length > 0; 
});

alert($rowMatches.length);
(另请参阅)

现在,在
$rowMatches
中,您将获得与查询匹配的行。
filter
函数包含您姓名的筛选器。您可以尝试使用
$.makeArray()
函数将其转换为数组,也可以使用集合上的
.each()
函数对集合进行迭代


无论哪种方式,您都应该能够访问行中的其他字段。

好的,非常感谢。但是,如果我使用编辑器添加“字段名”或类似的内容,那么我就能够搜索字段了?然后我能根据用户输入返回这两个字段吗?我修改了上面的示例以满足您的要求(希望如此)。请参阅“编辑”真棒和真棒。非常感谢你。我要好好玩玩这个!
var $myXML = $(myXMLString);

var $rowMatches = $myXML.filter(function(){
    var $cellMatches = $(this).find("cell:contains('smith')");
    return $cellMatches.length > 0; 
});

alert($rowMatches.length);