元素类型后必须跟有属性规范“>”或“/>”
Element type must be followed by either attribute specifications, ">", or "/>"
我正在开发与 Netsuite XML API 的集成,我偶尔会遇到错误
Element type \"msmith\" must be followed by either attribute specifications, \">\" or \"/>\"
当请求中包含电子邮件地址时(例如 msmith@gmail.com)。
我认为这是因为 @
符号需要编码,因为我对 & 符号也有类似的问题并且不得不将它们编码为 &
,但据我所知根据我的搜索,@
符号不是 XML 中的特殊字符。有没有一种方法可以对电子邮件地址进行编码或格式化,以便它们被 Netsuite 接受?
该错误消息并不是在抱怨 @
;它在抱怨 <
.
(在 XML 中,<
必须转义为 <
,除非它是元素标记的开始。)
您可能超过了 <msmith@gmail.com>
,而您本应超过 msmith@gmail.com
。
另见 Simplified XML Escaping 。
几乎所有您尝试包含在 xml 文档中的自由值都应该被转义。
如果您使用的是 freemarker,它通常会根据字段类型和输出格式为您执行此操作。
如果您自己构建 xml,您可以从值中创建一个文本节点,该值将转义任何保留字符 document.createTextNode('some text with reserved chars')
或者,如果您要连接字符串,Netsuite 具有此功能:
SS1
'<div>'+ nlapiEscapeXML('some text with reserved chars') +'</div>'
SS2 使用 N/xml
'<div>'+ xml.escape({xmlText:'some text with reserved chars'}) +'</div>'
我正在开发与 Netsuite XML API 的集成,我偶尔会遇到错误
Element type \"msmith\" must be followed by either attribute specifications, \">\" or \"/>\"
当请求中包含电子邮件地址时(例如 msmith@gmail.com)。
我认为这是因为 @
符号需要编码,因为我对 & 符号也有类似的问题并且不得不将它们编码为 &
,但据我所知根据我的搜索,@
符号不是 XML 中的特殊字符。有没有一种方法可以对电子邮件地址进行编码或格式化,以便它们被 Netsuite 接受?
该错误消息并不是在抱怨 @
;它在抱怨 <
.
(在 XML 中,<
必须转义为 <
,除非它是元素标记的开始。)
您可能超过了 <msmith@gmail.com>
,而您本应超过 msmith@gmail.com
。
另见 Simplified XML Escaping 。
几乎所有您尝试包含在 xml 文档中的自由值都应该被转义。
如果您使用的是 freemarker,它通常会根据字段类型和输出格式为您执行此操作。
如果您自己构建 xml,您可以从值中创建一个文本节点,该值将转义任何保留字符 document.createTextNode('some text with reserved chars')
或者,如果您要连接字符串,Netsuite 具有此功能:
SS1
'<div>'+ nlapiEscapeXML('some text with reserved chars') +'</div>'
SS2 使用 N/xml
'<div>'+ xml.escape({xmlText:'some text with reserved chars'}) +'</div>'