Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22

Как обработать xml-строку, содержащую символ &

06.07.2015, 17:01. Показов 3200. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. VB не знаю, гугл не помог.

С помощью WebRequest получаю с сервера xml-строку, данные из которой необходимо вставить в поля формы. Все работает за исключением случаев, когда в тексте встречается амперсанд. Тогда в строке
VB.NET
1
doc.LoadXml(responseFromServer)
получаю ошибку (во вложении)

Можно ли этот символ как-то экранировать и вывести в поле формы? Есть ли еще какие-то символы, которые могут вызывать эту проблему?
Миниатюры
Как обработать xml-строку, содержащую символ &  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.07.2015, 17:01
Ответы с готовыми решениями:

Как в макрос в качестве параметра передать строку, содержащую символ запятой?
Помогите ответить на вопрос: Как в макрос в качестве параметра передать строку, содержащую символ запятой?

Обработать строку, содержащую кириллические символы, методом Split()
Вопрос, как сделать так чтобы в массиве arr1 русские буквы записывались адекватно, а не ересью, и селект не работает а если string.Parse то...

Преобразовать строку с > < в xml
Ребят подскажите как преобразовать строку с > < в xml . Формат строки : ... packet = "<User.........> <...

5
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
06.07.2015, 17:10
Это происходит из-за того, что ты грузишь XML-документ отдельно. Последовательности, содержащие амперсанд - это объекты подстановки (entities), они бывают числовыми, и тогда они соответствуют символам юникода, и именованными. Большинство именованных объектов подстановки надо описывать в DTD, но если ты загрузил документ отдельно, а ссылка на DTD относительная, то найти его невозможно, поскольку XML-документу неизвестно относительно какого адреса надо разрешать такие ссылки. Выход в том, что надо либо указать документу адрес, с которого ты загрузил документ, либо грузить его с помощью метода Load, которому можно передавать не только локальные адреса, но и сетевые.
1
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
06.07.2015, 17:22  [ТС]
diadiavova, спасибо за ответ, но пока не очень поняла, как это исправить.

Допустим, у меня строка
XML
1
<table><string><name>Рога & Копыта</name></string></table>
Мне кажется, проблема не в том, откуда и как документ загружаю.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
06.07.2015, 17:32
Лучший ответ Сообщение было отмечено imenotyouarenot как решение

Решение

Цитата Сообщение от imenotyouarenot Посмотреть сообщение
Допустим, у меня строка
Это весь документ, пришедший с сервера?
Цитата Сообщение от imenotyouarenot Посмотреть сообщение
Рога & Копыта
Ну по идее такие варианты приходить не должны. Если это твой документ, то замени амперсанд на &amp;
2
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
06.07.2015, 17:36  [ТС]
Цитата Сообщение от diadiavova Посмотреть сообщение
Это весь документ, пришедший с сервера?
Не весь, только для примера)
Цитата Сообщение от diadiavova Посмотреть сообщение
Ну по идее такие варианты приходить не должны. Если это твой документ, то замени амперсанд на &amp;
Помогло, спасибо!

А есть еще какие-то символы, которые могут вызвать подобную ошибку?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
06.07.2015, 17:50
Цитата Сообщение от imenotyouarenot Посмотреть сообщение
А есть еще какие-то символы, которые могут вызвать подобную ошибку?
Ну как минимум < и >, заменять надо на &lt; и &gt; соответственно. Кроме того существуют последовательности для одинарных и двойных кавычек - полезно для использования в атрибутах: &apo; для одинарных (апостроф) и &quot;- для двойных. Все остальные надо объявлять. То есть если написать что-то типа &qwerty;, то тоже ругаться будет. А вот числовые можно использовать по своему усмотрению, например: символ < можно еще и так обозначить &# 60; или, если шестнадцатиричный формат использовать то так &#x 4C; (если не ошибаюсь с числами, но формат такой, только без пробелов, пробелы вставлены, чтобы разметка форума не съедала последовательности).

Добавлено через 5 минут
Есть список символов, которые просто запрещены, вместо них можно использовать числовые подстановки. Кроме того, если в тексте много "неудобных" символов, то можно заключить фрагмент в блок CDATA
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.07.2015, 17:50
Помогаю со студенческими работами здесь

Строки Введите строку.В конце каждого слова поставить символ &#. Вывести строку на экран
Введите строку.В конце каждого слова поставить символ &amp;#. Вывести строку на экран

Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ?
есть какая-нибудь более короткая запись для проверки, принадлежит ли символ заданному диапазону m...n, кроме if (c &lt;= n &amp;&amp; c...

Как вывести строку "&nbsp;" в результирующий HTML из JSP с XML-синтаксисом?
Как вывести строку ' ' в результирующий HTML из JSP с XML-синтаксисом? Напрямую вставить ' ' в текст JSP с XML-синтаксисом нельзя, -...

Сформировать строку, содержащую символы заданной строки в обратном порядке, причем каждый четвертый символ - выкинуть
Дана строка. Сформировать строку, содержащую символы данной в обратном порядке, причем каждый четвертый символ (считая с конца данной...

Как изменить код чтоб в xml файл записывалось не с &gt; &lt; а с <>?
Нужно так: &lt;contents&gt; &lt;attribute name=&quot;Name&quot;&gt; &lt;value&gt;&lt;string val=&quot;Sally&quot;/&gt;&lt;/value&gt; &lt;/attribute&gt; Получается так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru