2015-06-22 35 views
0

我正在使用someresponse.getBody();存储我从web服务获得的XML响应。当我将它传递给下面的函数时,它无法使用search()或indexOf()进行分析。两者都返回10和-1的开始和结束位置。string.search()函数无法从XML响应分析字符串

但是,当我从执行日志中提取响应的主体并用该值硬编码该变量时。当我将该值传递给相同的函数时,它将按照我的预期进行处理。

这看起来是一个格式问题。任何想法我可以在这里做什么? 我只限于使用Javascript或NetSuite API,代码运行在服务器端。我使用下面的函数调用函数:var xmlCCConnote = getValue('CCConnote',response); var xmlCCConnote = getValue('CCConnote',response); var xmlCCConnote = getValue('CCConnote',response);

function getValue(tag,xmlString){ 
    var value; 
    var tempString; 
    var startTag,endTag; 
    var startPos,endPos; 
    startTag = "<"+tag+">"; 
    endTag = "</"+tag+">"; 
    tempString=xmlString; 
    startPos = tempString.indexOf(startTag) + startTag.length; 
    nlapiLogExecution('DEBUG', 'startPos = ', startPos); 
    endPos = tempString.indexOf(endTag); 
    nlapiLogExecution('DEBUG', 'endPos = ', endPos); 
    value = tempString.slice(startPos,endPos); 
    return value; 
} 
+0

是否没有合适的XML解析器可用?正如您已经发现的那样,使用字符串操作来解析XML中的值非常容易出错。编码或转义输出可能存在问题。我会尝试获取输入字符串的十六进制转储,以确保没有什么好玩的事情发生。 –

+0

我们确实有使用XPATH解析XML的API,但我仍然在等待NetSuite回答我的问题,因为它们没有任何价值。这只是一个临时解决方案,直到XML API被正确设置。 – user3733716

+0

你不能使用第三方库?让人惊讶。在这一点上,我可以推荐的是找到一个复制问题的独立案例,然后将其发布到此处。如果你说它在XML被硬编码时运行,而不是在运行时运行,那么* something *与输入是不同的,在试图修改你的提取函数之前,我会弄清楚这一点。 –

回答

0

我被传入函数的xmlstring被转义了。以下问题解决了问题:

startTag = '&lt;'+tag+'&gt;'; 
endTag = '&lt;/'+tag+'&gt;';