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

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

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

Добрый день. VB не знаю, гугл не помог.

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

Можно ли этот символ как-то экранировать и вывести в поле формы? Есть ли еще какие-то символы, которые могут вызывать эту проблему?
Миниатюры
Как обработать xml-строку, содержащую символ &  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2015, 17:01
Ответы с готовыми решениями:

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

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

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

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

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

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

Решение

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

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

Добавлено через 5 минут
Есть список символов, которые просто запрещены, вместо них можно использовать числовые подстановки. Кроме того, если в тексте много "неудобных" символов, то можно заключить фрагмент в блок CDATA
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2015, 17:50

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.