0

我创建了一个库,用于从一组使用 jQuery 的 XML 文件中解析和提取信息。所以做这样的事情很简单:

$xml = $($.parseXML(xmlText))
title = $xml.find(".title>longName").text()

然后我意识到我的小库不应该依赖于所有的 jQuery,而且我可能只使用 Sizzle 库就可以获得我想要的东西,因为这就是 jQuery 的 .find 方法的来源。但是,我一出门就遇到了麻烦。

Sizzle 似乎没有 parseXML 函数。有没有办法传入一大段 XML 文本并取回可以搜索的对象?

我注意到您可以将上下文传递给 Sizzle 的 find 函数。但是,Sizzle.find(".title", xmlText) 找不到任何东西。

有任何想法吗?是否可以像上面使用 jQuery 一样使用 Sizzle 解析 XML?

注意:我希望能够以无头方式或在 Node 上运行它,所以我不想使用像 DOMParser 这样的浏览器依赖项。

4

1 回答 1

2

你可以parseXML从 jQuery 中使用:

function parseXML( data ) {
    if ( typeof data !== "string" || !data ) {
        return null;
    }
    var xml, tmp;
    try {
        if ( window.DOMParser ) { // Standard
            tmp = new DOMParser();
            xml = tmp.parseFromString( data , "text/xml" );
        } else { // IE
            xml = new ActiveXObject( "Microsoft.XMLDOM" );
            xml.async = "false";
            xml.loadXML( data );
        }
    } catch( e ) {
        xml = undefined;
    }
    if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
        throw new Error( "Invalid XML: " + data );
    }
    return xml;
}
于 2012-05-09T15:33:59.337 回答