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

search and output data from an XML file using JavaScript

本文关键字:输出 数据 搜索 文件 JavaScript XML 使用      更新时间:2023-09-26

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

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

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

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

如果你有一个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)");

查看下面的示例JSFiddle

编辑

我把这个做得更复杂一点:

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

(也是在这个JSFiddle)

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

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