【问题标题】:search and output data from an XML file using JavaScript使用 JavaScript 从 XML 文件中搜索和输出数据
【发布时间】:2011-07-11 21:41:28
【问题描述】:

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

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

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

对于 XML,我完全是个菜鸟,但可以做一点 JavaScript 和 JQuery!有没有更简单的方法来做到这一点?我没有使用服务器端语言的选项,也无法使用数据库(我知道很弱)。

提前致谢。

【问题讨论】:

    标签: javascript jquery html xml search


    【解决方案1】:

    如果您将 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 $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() 函数迭代集合。

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

    【讨论】:

    • 好的,非常感谢。但是,如果我要使用编辑器添加“字段名”或类似内容,那么我可以在字段上进行搜索吗?然后我可以根据用户输入返回这两个字段吗?
    • 我已经修改了上面的示例以满足您的要求(希望如此)。见“编辑”
    • 太棒了,太棒了。太感谢了。会玩这个!
    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多