Использование специальных символов в документах XML - PullRequest
1 голос
/ 29 апреля 2009

Я хотел бы знать, как использовать символ "
" (LINE FEED) для разделения некоторой информации в атрибуте. Посмотрите пример ниже:

<element attrinfo="info1=109&#xA;info2=108&#xA;info3=107" />

Я использую SetAttribute(), чтобы установить текст атрибута, но когда я сохраняю XML, информация в attrinfo выглядит так:

<element attrinfo="info1=109&amp;#xA;info2=108&amp;#xA;info3=107" />

"&" - это специальный символ, поэтому XML заменяет его на "&amp;"

Как я могу решить это? Я видел кое-что об использовании Entity Reference, но я не понимаю, как его использовать.

Вот мой код, использующий \ n:

ls_DadosAdicionais = "volume=1800;peso=78;altura=157"
ll_pos = POS( ls_DadosAdicionais, ";" ) 
DO
    ls_DadosAdicionais = REPLACE( ls_DadosAdicionais, ll_pos, 1, '~n' )
    ll_pos = POS( ls_DadosAdicionais, ";", ll_pos + 1 )
LOOP WHILE ll_pos > 0
lo_exm = io_xml.createElement( "exame")
lo_exm.SetAttribute( "dados_adicionais", ls_DadosAdicionais )

Ответы [ 2 ]

2 голосов
/ 29 апреля 2009

SetAttributes выполняет перевод сущности автоматически. Не подставляйте новую строку вручную. Просто включите \ n в строку, которую вы передаете в SetAttribute. Он должен быть переведен на нужную сущность при сохранении.

2 голосов
/ 29 апреля 2009

Вы должны сохранить фактический символ перевода строки в атрибуте. Экранирование обеспечивается API.

Другими словами: если вы сохраняете строку "&#xA;", API правильно экранирует ее как "&amp;#xA;", так что вы получите строку "&#xA;" при повторном чтении данных. Всегда храните данные , которые вы хотите сохранить, никогда не выполняйте ручное экранирование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...