我创建了一个库,用于从一组使用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这样的浏览器依赖项。
答案 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;
}