powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS, экранировка спецсимволов в строке для xml
21 сообщений из 21, страница 1 из 1
JS, экранировка спецсимволов в строке для xml
    #40137277
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как в js правильно экранировать спецсимволы в строке при генерации xml контактенацией?
Т.е хочется что-то вида anyfunc("<1") с результатом "<1"
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137281
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rvsn
Подскажите пожалуйста, как в js правильно экранировать спецсимволы в строке при генерации xml контактенацией?
Т.е хочется что-то вида anyfunc("<1") с результатом "<1"

Извиняюсь, экранировка съехала
Нужно anyfunc("<1") с результатом " & lt ; 1" без пробелов
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137300
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
при генерации xml контактенацией

Вот это не понятно...
Т.е. не понятно какую задачу ты выполняешь.
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137303
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn , сама экранировка не во всех случаях нужна...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<!--
<script src="https://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
-->
<style>
</style>
<script>
const val = '&lt;1'
alert(val)
</script>
</head>
<body>
<p id='test1'></p>
<p id='test2'></p>
<script>
document.querySelector('#test1').insertAdjacentHTML('afterbegin', val)
document.querySelector('#test2').insertAdjacentText('afterbegin', val)
</script>
</body>
</html>
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137312
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Задача - с клиента на js передать строку с небольшой кучей пользовательских данных в процедуру на Oracle11.
Предполагается сделать при помощи xml вида
Код: html
1.
<Root><param1 el="123" val="&lt;1"></param1><param2>qwerty</param2></Root>
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137314
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Для получения валидного xml с последующим разбором на стороне СУБД - нужна
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137315
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
Задача - с клиента на js передать строку с небольшой кучей пользовательских данных в процедуру на Oracle11.

Уже теплее.
А каким образом будет выполняться передача такой строки?
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137318
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Есть местная api, которая умеет вызывать оракловые процедуры и передавать строки как параметр varchar2.
Оракловые XML и CLOB для этой апишки недоступны
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137319
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
Есть местная api, которая умеет вызывать оракловые процедуры и передавать строки как параметр varchar2.

Тогда тут больше вопрос к тому "местному api", как она передает строки на сервер (кодирует ли как-то) и как "принимающая сторона" на сервере работает с такого рода данными...

Оно может все туду приходит нормально, но ты ведь чем-то смотришь данные. Возможно это уже просмотровик так отображает полученное...
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137324
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

Я логгирую данные (сохраняю в таблице) на входе процедуры СУБД.
Если я в js присваиваю значение строке
Код: html
1.
l_str= '<Root><param1 el="123" val="&lt;1"></param1><param2>qwerty</param2></Root>'


то я и в таблице вижу значение
Код: html
1.
 '<Root><param1 el="123" val="&lt;1"></param1><param2>qwerty</param2></Root>'



Если я в js присваиваю значение строке
Код: html
1.
l_str= '<Root><param1 el="123" val="<1"></param1><param2>qwerty</param2></Root>'


то я и в таблице вижу значение
Код: html
1.
 '<Root><param1 el="123" val="<1"></param1><param2>qwerty</param2></Root>'

, на котором калится парсер, т.к. xml невалидна
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137330
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
таблице вижу значение
Код: html
1.
 '<Root><param1 el="123" val="<1"></param1><param2>qwerty</param2></Root>'

, на котором калится парсер, т.к. xml невалидна

Т.е. тебе просто нужно работать по первому варианту...
В чем тогда проблема я пока не понимаю.
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137334
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
есть ли в js готовая функция. которая выполняет экранировку спецсимволов для xml?
Те для строки
Код: html
1.
"<1"


вернет значение
Код: html
1.
"&lt;1"
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137336
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
есть ли в js готовая функция. которая выполняет экранировку спецсимволов для xml?

Там не так все просто...
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<script type="text/javascript" language="javascript">
//Parse String to XML
function StringToXML(oString) {
 //code for IE
 if (window.ActiveXObject) { 
 var oXML = new ActiveXObject("Microsoft.XMLDOM"); oXML.loadXML(oString);
 return oXML;
 }
 // code for Chrome, Safari, Firefox, Opera, etc. 
 else {
 return (new DOMParser()).parseFromString(oString, "text/xml");
 }
}
</script>


https://www.dotnettricks.com/learn/javascript/convert-string-to-xml-and-xml-to-string-using-javascript
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137339
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn , вот еще варианты...
https://askdev.ru/q/preobrazovanie-stroki-v-xml-dokument-v-javascript-149994/

Т.е. там не все так тривиально.
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137341
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn , с jQuery немного попроще будет...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
// Десериализация из XML (преобразование строки в объект).
var xmlStr = '<rss version="2.0"><channel><title>RSS Title</title></channel></rss>',
    xmlDoc = $.parseXML(xmlStr),
    $xml = $(xmlDoc);
// В переменной $xml получаем объект XML, с которым можно работать
// средствами jQuery.
console.log($xml);
 
// Сериализация в XML (преобразование объекта в строку).
var outXmlStr = xmlDoc.xml == undefined
    ? (new XMLSerializer()).serializeToString(xmlDoc)
    : xmlDoc.xml;
// В переменной outXmlStr получаем строку, сформированную из
// XML-объекта. В строке будут отражены все изменения, сделанные
// в XML-объекте.



http://www.pzone.ru/web/xml-jquery-parse/
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137343
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
Спасибо тебе. добрый человек. Ушел читать
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137355
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn , т.е. идея всего этого такая:
- ты делаешь не строку, а собственно xml-документ
- потом отправляешь либо его, либо его в строку и отправляешь
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137357
rvsn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

помогло
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
function escapeXml(unsafe) {
    return unsafe.replace(/[<>&'"]/g, function (c) {
        switch (c) {
            case '<': return '&lt;';
            case '>': return '&gt;';
            case '&': return '&amp;';
            case '\'': return '&apos;';
            case '"': return '&quot;';
        }
    });
}


отсюда
ссылка
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137361
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn , вот про что я писал выше ;)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
const xml = document.createElement('xml')
const root = document.createElement('root')
const p1 = document.createElement('param1')
p1.setAttribute('el', 123)
p1.setAttribute('val', '<1')
const p2 = document.createElement('param2')
root.append(p1)
root.append(p2)
xml.append(root)
const val = new XMLSerializer().serializeToString(xml)
alert(val)
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137362
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
помогло

Простая замена это вовсе банально...
...
Рейтинг: 0 / 0
JS, экранировка спецсимволов в строке для xml
    #40137365
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rvsn
отсюда
ссылка

Тогда хоть так вот...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function escapeXml(unsafe) {
	const o = {
		'<': '&lt;',
		'>': '&gt;',
		'&': '&amp;',
		'\'': '&apos;',
		'"': '&quot;',
	}
    return unsafe.replace(/[<>&'"]/g, c => o[c] ? o[c] : c);
}
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS, экранировка спецсимволов в строке для xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]