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

时间:2011-07-11 09:55:53

标签: javascript jquery html xml search

我有一组数据,这些地方名称及其位置保存在XML文件中,如下所示:

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

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

我是关于XML的总菜鸟,但可以做一些JavaScript和JQuery!有更简单的方法吗?我没有使用服务器端语言的选择,也不能使用数据库(我知道的很弱)。

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

var $myXML = $(myXMLString);

现在您可以使用jQuery方法进行遍历和搜索。例如,在您的单元格中搜索“smith”:

var $matches = $myXML.find("cell:contains('smith')"); //'smith' being your user input

您的XML似乎没有任何元数据,因此我们无法将搜索限制在特定字段中。如果你的单元格有'fieldname',例如:

<row>
<cell fieldname='name'>name</cell>
<cell fieldname='location'>location</cell>
</row>

然后你可以使用它:

var $matches = $myXML.find("cell[fieldname='name']:contains(smith)");

请参阅this JSFiddle

上的示例

修改

我让它变得更复杂了:

var $myXML = $(myXMLString);

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

alert($rowMatches.length);

(也在this JSFiddle

现在,在您的$rowMatches中,您将拥有与您的查询匹配的行。 filter函数包含您名称的过滤器。您可以尝试使用$.makeArray()函数将其转换为数组,也可以使用集合上的.each()函数迭代集合。

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