Lux*_*pes 5 jquery activex node.js xml-parsing
我想在node.js中使用jQuery parseXml
我收到此错误:
Error: Invalid XML: <?xml version="1.0"...
Run Code Online (Sandbox Code Playgroud)
但问题不在于XML
问题出在node-jquery.js中:
parseXML: function( 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 ) {
jQuery.error( "Invalid XML: " + data );
}
return xml;
},
Run Code Online (Sandbox Code Playgroud)
简单地说,在node.js中,没有DOMParser,也没有ActiveXObject("Microsoft.XMLDOM")
由于我在Windows中工作,我希望ActiveXObject可以工作,但不,它不会,jQuery吞下的实际错误不是无效的XML,而是未定义ActiveXObject:
ReferenceError: ActiveXObject is not defined
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:
Run Code Online (Sandbox Code Playgroud)
有没有解决方法呢?如何使jQuery.parseXML工作?
如果您想继续使用jQuery.parseXML而不必对代码进行任何更改(例如,如果您希望能够在客户端和Node.js中运行相同的javascript),则很容易设置它.M. Laing的答案中提到的xmldom模块公开了一个构造函数,jQuery可以像在浏览器中使用DOMParser一样使用它.以下是如何操作:DOMParser
首先,安装xmldom:
npm install xmldom --save
Run Code Online (Sandbox Code Playgroud)
假设您已经在Node.js中使用了jQuery 2.1.x或更高版本(有关设置它的说明,请参阅此存储库中的README ),您现在只需要xmldom并将其DOMParser构造函数公开为全局:
global.DOMParser = require('xmldom').DOMParser;
Run Code Online (Sandbox Code Playgroud)
jQuery现在能够成功parseXML.
| 归档时间: |
|
| 查看次数: |
3261 次 |
| 最近记录: |