JavaScript对象长度返回未定义

JavaScript对象长度返回未定义,javascript,xml,Javascript,Xml,我对这个网站和编程都是新手,所以我对任何错误表示歉意。但我正在努力学习JavaScript 我正在使用JavaScript解析一个包含位置记录的XML文件。如果XML文件包含多个位置记录,则以下代码按预期工作,并创建正确数量的位置记录。如果XML文件仅包含1个位置记录,则无法创建位置记录 我在这个网站上找到了很多关于这个问题的帖子,其中提到“JavaScript对象没有长度属性yy,只有数组有长度属性”。我们正在将XML文件转换为一个对象。但是,我还无法弄清楚建议的解决方案如何应用到我的代码中。

我对这个网站和编程都是新手,所以我对任何错误表示歉意。但我正在努力学习JavaScript

我正在使用JavaScript解析一个包含位置记录的XML文件。如果XML文件包含多个位置记录,则以下代码按预期工作,并创建正确数量的位置记录。如果XML文件仅包含1个位置记录,则无法创建位置记录

我在这个网站上找到了很多关于这个问题的帖子,其中提到“JavaScript对象没有长度属性yy,只有数组有长度属性”。我们正在将XML文件转换为一个对象。但是,我还无法弄清楚建议的解决方案如何应用到我的代码中。当我有1条位置记录时,location.length=未定义,但当有2条记录时,location.length=2

当XML文件仅包含1条记录时,需要在代码中更改哪些内容才能成功创建位置记录?谢谢你的帮助

var xmlHelper = new XMLHelper(source.u_ebo_ebopayload);
var obj = xmlHelper.toObject();
JSUtil.logObject(obj);
var location = obj['ebo:Loc'];

gs.log('LocTransform - location object: ' + obj['ebo:Loc']);  
//One record in XML returns '[object Object]'
//Two records in XML returns '[object Object],[object Object]'

gs.log('LocTransform - location length: ' + location.length);
//One record returns 'undefined'
//Two records return '2'

//Start loading data for each location record
for (var i = 0; i < location.length; i++) {
    gs.log('LocTransform - Inside the For Loop with ' + location[i]['ebo:LocNbr']);
    //One record does not get inside FOR loop so no location record is created
    //Two records do get inside FOR loop and create both location records

    var gr = new GlideRecord('imp_location');
    gr.u_locnbr = location[i]['ebo:LocNbr'];
    gr.u_locnm = location[i]['ebo:LocNm'];
    gr.insert();
}
var xmlHelper=新的xmlHelper(source.u_ebo_ebo);
var obj=xmlHelper.toObject();
JSUtil.logObject(obj);
var位置=obj['ebo:Loc'];
log('LocTransform-location对象:'+obj['ebo:Loc']);
//XML中的一条记录返回“[object]”
//XML中的两条记录返回“[object object],[object object]”
gs.log('LocTransform-location-length:'+location.length);
//一条记录返回“未定义”
//两条记录返回“2”
//开始加载每个位置记录的数据
对于(变量i=0;i
听起来您使用的数据只包装结果集大于1的数组。只需将结果包装在数组中:

if (!location.length) {
    location = [location];
}

您是否考虑过将其转换为XML文档并使用XPath获取元素及其属性,而不是将其转换为(普通?)对象?如果在“//Two记录返回“2”后添加一行location=location.length,会怎么样?位置:{length:1,'0':位置};XMLHelper.toObject是决定如何翻译XML的对象。如果他想使用这个库,而不是以其他方式解析XML,他必须处理它的怪癖。