Node.js 使用nodejs从XML中读取元素的最简单有效的方法是什么?
如何轻松高效地读取复杂的xml并基于元素名获取所有值 以下面的xml为例,如何仅获取num_卧室和price元素值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转换为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