[英]Node.js - method is returning UNDEFINED when parsing XML
我正在解析Node.js中的類中的硬編碼XML結構。 問題在於解析是異步進行的,這導致該方法返回默認值(空)。
function Codeorder() {
// Hardcodet XML-tree as string
this.order = " <root> \
<order instancename=\"flashlibraries\" opens=\"true\" />\
<order instancename=\"TESTTEST\" opens=\"true\" />\
<order instancename=\"flashlibraries\" opens=\"false\" />\
</root>";
this.orderXML = null;
}
Codeorder.prototype.getOrderedCodepieces = function(instancename) {
var parseString = require('xml2js').parseString;
parseString(this.order, function (err, result) {
return result; // This doesn't work
});
// Return "All OK";
}
module.exports = Codeorder;
如何獲得等待解析器完成然后返回XML內容的方法?
免責聲明:您可以實現所需的功能,但可能與xml2js的未來版本不兼容。
Codeorder.prototype.getOrderedCodepieces = function(instancename) {
var parseString = require('xml2js').parseString;
var ret = {};
parseString(this.order, {async: false}, function(err, data) {
ret.err = err;
ret.data = data;
});
if (ret.err) {
throw ret.err;
}
return ret.data;
}
進行此更改后,就可以將所需的數據作為getOrderedCodepieces()
的返回值:
var c = new Codeorder();
var data = c.getOrderedCodepieces();
console.log(JSON.stringify(data, null, 2));
這取決於所支持的解析器的async
選項。 如文檔中所述,將來可能會更改:
sync(默認為false):回調應該異步嗎? 如果您的代碼取決於回調的同步執行,則這可能是不兼容的更改。 將來的xml2js版本可能會改變這一點
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.