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;
}
是否沒有合適的XML解析器可用?正如您已經發現的那樣,使用字符串操作來解析XML中的值非常容易出錯。編碼或轉義輸出可能存在問題。我會嘗試獲取輸入字符串的十六進制轉儲,以確保沒有什麼好玩的事情發生。 –
我們確實有使用XPATH解析XML的API,但我仍然在等待NetSuite回答我的問題,因爲它們沒有任何價值。這只是一個臨時解決方案,直到XML API被正確設置。 – user3733716
你不能使用第三方庫?讓人驚訝。在這一點上,我可以推薦的是找到一個複製問題的獨立案例,然後將其發佈到此處。如果你說它在XML被硬編碼時運行,而不是在運行時運行,那麼* something *與輸入是不同的,在試圖修改你的提取函數之前,我會弄清楚這一點。 –