За типом элемента должны следовать либо спецификации атрибутов, «>», либо «/>» - PullRequest
0 голосов
/ 08 апреля 2020

Я занимаюсь интеграцией с Netsuite API XML, и иногда я получаю сообщение об ошибке

Element type \"msmith\" must be followed by either attribute specifications, \">\" or \"/>\", когда в запросе содержится адрес электронной почты (например, msmith@gmail.com).

Я предполагаю, что это потому, что символ @ необходимо кодировать, поскольку у меня была похожая проблема с амперсандами, и мне пришлось кодировать их как &, но, насколько я могу судить по результатам моих поисков, @ Символ не является специальным символом в XML. Есть ли способ, которым я могу кодировать или форматировать адреса электронной почты так, чтобы они были приняты Netsuite?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

Это сообщение об ошибке не жалуется на @; он жалуется на <.

(в XML < необходимо экранировать как &lt;, если только он не начинает тег элемента.)

Вы, вероятно, передали <msmith@gmail.com> где Вы должны были пройти msmith@gmail.com.

См. также Упрощенный XML Экранирование .

0 голосов
/ 08 апреля 2020

Почти все свободные значения, которые вы пытаетесь включить в документ 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>'
...