使用Sizzle解析XML文件?

时间:2012-05-09 15:22:53

标签: jquery xml sizzle

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

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

然后我意识到我的小库不应该依赖于所有的jQuery,并且我可能只需要使用Sizzle库就能获得我想要的东西,因为jQuery' s .find方法来自。但是,我很难走出大门。

Sizzle似乎没有parseXML功能。有没有办法传入一大块XML文本并找回可以搜索的对象?

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

有什么想法吗?是否可以使用Sizzle以与上面使用jQuery相同的方式解析XML?

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

1 个答案:

答案 0 :(得分:2)

你可以使用jQuery中的parseXML

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;
}
相关问题