"实体名称必须紧跟在'&'在实体引用中&”;

"The entity name must immediately follow the '&' in the entity reference."

本文关键字:实体 amp 引用 quot      更新时间:2023-09-26

我正试图通过我在netusite中制作的自定义suitelet创建一个pdf。我正在使用API"nlapiXMLToPDF"来创建pdf。当我尝试从Netsuite(使用javascript)中获取包含与号(&)的值,并尝试创建pdf时,我会得到错误

实体名称必须紧跟在"&"之后在实体引用中。

strName += "<div class='"" + divs[divVal] + "'">";
strName += "<table class = '"gentable'" style='"width: 25%; margin-top:20px;margin-bottom: 20px;'"><tr><td class='"addressheader'">Shipping Address</td></tr>";
strName += "<tr>"; 
strName += "<td class='"address'">"  + Address + "</td>";
strName += "</tr>";
strName += "<tr>";
strName += "<td class='"addressheader'">Phone</td>";
strName += "</tr>";
strName += "<tr>";
strName += "<td>" + Phone + "</td>";
strName += "</tr></table>";

Address和Phone正在从netsuite字段中提取值。其中一些字段包含一个"&"。当我尝试用替换"&"时

&amp;

使用类似的东西

Address.replace("&", "&amp;");

我不再得到错误,pdf生成良好,只是现在它在pdf表单上显示"&amp;"。如果我不使用替换方法,我会得到错误。

如有任何帮助,我们将不胜感激。提前谢谢。

固定

用netsuite API nlapiEscapeXML()封装我的值修复了我的问题。我不知道我怎么会忽视这一点。

尝试单独转义Address,而不是整个XML字符串。当你替换地址中的"&"时,它已经是正确的"Barnes &amp; Noble",所以当你生成它时,它将显示为"Barnes&Noble"。

但您所做的是将地址中的"&"替换为"Barnes &amp; Noble",然后使用nlapiEscapeXML,它将为您提供"Barnes &amp; amp; Noble",这就是您获得"Barnes & amp; Noble" 的原因