我在Netsuite中有地址数据,如下所示,请注意in中包含“<”和“>”然后与需要转义的其他字符一起签名,成为XML文档中的有效字符。 12 ENTERPRISE RD UNIT 3& 4< 5> “6”'7'
在javascript(jetsuites版本的javascript)中,我尝试了以下“FOR”循环,数据最终以<和>转换成& LT;和& gt; (如下所示没有空格) 12 ENTERPRISE RD UNIT 3& 4& LT; 5& gt; “6”'7'
var EscapedField = '';
for (var pos = 0; pos < FieldToEscape.length; pos++)
{
switch (FieldToEscape.charAt(pos))
{
// escape "less than"
case "<":
EscapedField = EscapedField + '<'
break;
// escape "greater than"
case ">":
EscapedField = EscapedField + '>'
break;
default:
EscapedField = EscapedField + FieldToEscape.charAt(pos)
break;
}
}
根据egrubaugh360的建议,我在“Netsuite”/ Javascript中尝试了以下内容,
1)我的结果集包含一个包含(&amp;,&lt;,&gt;,“,”)的地址,(即&符号,小于,大于,双引号,单引号)
2)当您查看调试器中的值时,它们是有效的
3)在数据集上执行NS函数nlapiEscapeXML后,“&lt;”和“&gt;”被转换为&amp; LT;和&amp; gt;实际的转义字符
var ADDRLINE1 = nlapiEscapeXML(results [i] .getValue('shipaddress1'));
$ results [i] .getValue('shipaddress1')
12 ENTERPRISE RD UNIT 3&amp; 4&lt; 5> “6”'7'
$ ADDRLINE1
12 ENTERPRISE RD UNIT 3&amp; 4&amp; LT; 5&amp; GT; “6”'7'
4)在NetSuite / javascript中,我尝试了很多转义为“&lt;”和“&gt;”的排列,但它们最终都被转换为&lt;和&gt;
我打算尝试用字符串替换&lt;和处理文件的ETL工具(Jitterbit)中的&amp; gt,应该可以工作,但它很诡异。
5)感谢您的帮助
答案 0 :(得分:2)
NetSuite API包含一个用于此目的的方法:nlapiEscapeXML
我建议在NetSuite帮助中调查此方法。它接受单个String参数,并且(应该)返回相同的字符串,其中任何XML控制字符都适当地转义。