3

我一直在寻找使用 javascript/jquery 的 XML 搜索方法的一周中的大部分时间 - 但大多数方法都是用于输出到 HTML 或以 XML 格式显示整个记录数组,这是我不想实现的。我正在寻找的功能是搜索“Sarah”等用户,然后将“部门”和“代码”存储在相应的变量中;(var 部门,var 代码)。我有以下 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<phonebook>
<person>
    <first_name>Sarah</first_name>
    <department>Sales</department>
    <code>78</code>
</person>
<person>
    <first_name>Jean-Claude</first_name>
    <department>HR</department>
    <code>90</code>
</person>
</phonebook>

对于包含 400 多条记录的 XML 文件,我该如何处理?

感谢你们。这是面向未来的人们的最终工作解决方案:

function ReadXML() {
    try {
        var xmlPath = "../WebResources/new_fruits.xml";
        $.ajax({
            type: "GET",
            url: xmlPath,
            dataType: "xml",
            success: parseXML
        });
    } catch (e) {
        alert("Error while reading XML; Description – " + e.description);
    }
}

function parseXML(xml) {
var $person = $(xml).find('first_name').filter(function() {
    return $(this).text() == "Sarah";
}).closest('person');

var department = $('department', $person).text(); // = Sales
var code = $('code', $person).text(); // = 78    
}
4

2 回答 2

3

您可以使用filter,如下所示:

function parseXML(xml) {
    var $person = $(xml).find('first_name').filter(function() {
        return $(this).text() == "Sarah";
    }).closest('person');

    var department = $('department', $person).text(); // = Sales
    var code = $('code', $person).text(); // = 78
}

请注意,这filter比使用:contains选择器要快得多。当搜索 4000 个元素时,这种差异将非常明显。

于 2013-11-02T12:57:18.997 回答
0

jQuery 应该可以在 XML 上正常工作。

var doc = $(your-xml-doc-string);
doc.find('person firstname').each(function() {
     var self=$(this);
     console.log(self.text());
});
// or
var sarah = doc.find('person firstname:contains("Sarah")');

包含选择器应该可以正常工作。

于 2013-11-02T12:52:43.010 回答