Node.js 使用nodejs从XML中读取元素的最简单有效的方法是什么?

Node.js 使用nodejs从XML中读取元素的最简单有效的方法是什么?,node.js,Node.js,如何轻松高效地读取复杂的xml并基于元素名获取所有值 以下面的xml为例,如何仅获取num_卧室和price元素值 谢谢一旦您将xml转换为json,事情就会变得简单。 我知道一个很好的工具来做这件事: 它的一个问题是,即使只有一个对象,它也总是设置数组。不知道他们是否有解决办法。如果没有,您可以使用以下代码进行修复: var cleanXML = function(xml){ var keys = Object.keys(xml), o = 0, k = keys.length,

如何轻松高效地读取复杂的xml并基于元素名获取所有值

以下面的xml为例,如何仅获取num_卧室和price元素值


谢谢

一旦您将xml转换为json,事情就会变得简单。 我知道一个很好的工具来做这件事:

它的一个问题是,即使只有一个对象,它也总是设置数组。不知道他们是否有解决办法。如果没有,您可以使用以下代码进行修复:

var cleanXML = function(xml){
var keys = Object.keys(xml),
    o = 0, k = keys.length,
    node, value, singulars,
    l = -1, i = -1, s = -1, e = -1,
    isInt = /^-?\s*\d+$/,
    isDig = /^(-?\s*\d*\.?\d*)$/,
    radix = 10;

for (; o < k; ++o) {
    node = keys[o];

    if (xml[node] instanceof Array && xml[node].length === 1) {
        xml[node] = xml[node][0];
    }

    if (xml[node] instanceof Object) {
        value = Object.keys(xml[node]);

        if (value.length === 1) {
            l = node.length;

            singulars = [
                node.substring(0, l - 1),
                node.substring(0, l - 3) + "y"
            ];

            i = singulars.indexOf(value[0]);

            if (i !== -1) {
                xml[node] = xml[node][singulars[i]];
            }
        }
    }

    if (typeof(xml[node]) === "object") {
        xml[node] = cleanXML(xml[node]);
    }

    if (typeof(xml[node]) === "string") {
        value = xml[node].trim();

        if (value.match(isDig)) {
            if (value.match(isInt)) {
                if (Math.abs(parseInt(value, radix)) <= (2 ^ 53 - 1)) {
                    xml[node] = parseInt(value, radix);
                }
            }else {
                l = value.length;

                if (l <= 15) {
                    xml[node] = parseFloat(value);
                }else {
                    for (i = 0, s = -1, e = -1; i < l && e - s <= 15; ++i) {
                        if (value.charAt(i) > 0) {
                            if (s === -1) {
                                s = i;
                            }else {
                                e = i;
                            }
                        }
                    }

                    if (e - s <= 15) {
                        xml[node] = parseFloat(value);
                    }
                }
            }
        }
    }
}
return xml;
};
var cleanXML=函数(xml){
var keys=Object.keys(xml),
o=0,k=keys.length,
节点,值,奇点,
l=-1,i=-1,s=-1,e=-1,
isInt=/^-?\s*\d+$/,,
isDig=/^(-?\s*\d*\.?\d*)$/,
基数=10;
对于(;o