簡體   English   中英

Node.js-解析XML時方法返回UNDEFINED

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM