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

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

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

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

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

Можно ли этот символ как-то экранировать и вывести в поле формы? Есть ли еще какие-то символы, которые могут вызывать эту проблему?
http://www.cyberforum.ru/vb-net/thread554510.html
0
Миниатюры
Как обработать xml-строку, содержащую символ &  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 17:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как обработать xml-строку, содержащую символ & (Visual Basic .NET):

XML: как мне программно сделать строку заданного формата?
Здравствуйте. Подскажите пожалуйста по xml. Есть такой код Dim KMLSimpData...

Обработать строку с неверной кодировкой (с 1252-1251)
не могу раскодировать строчку "îáñòàíîâêà çàëà â êâàðòèðå", находил на форумах...

Продублировать строку матрицы, содержащую ее максимальный элемент
Дана матрица MxN. Продублировать строку матрицы, содержащую ее максимальный...

Вывести на экран строку, содержащую наименьшее число отрицательных элементов
Ввести массив А(5, 6). Вывести на экран строку, содержащую наименьшее число...

Удалить из массива каждую строку, содержащую элемент, кратный трем
Как удалить из массива каждую строку, содержащую элемент, кратный трем? ...

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

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

Решение

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

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

Добавлено через 5 минут
Есть список символов, которые просто запрещены, вместо них можно использовать числовые подстановки. Кроме того, если в тексте много "неудобных" символов, то можно заключить фрагмент в блок CDATA
2
06.07.2015, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 17:50
Привет! Вот еще темы с решениями:

Объясните строку "Val("&H" & Mid(PDUCodes(i), 1, 2))"
Хелп, переписую функцию на С# не пойму что это значит: Val(&quot;&amp;H&quot; &amp;...

Вывести строку, содержащую символы строки S, между которыми вставлено по одному пробелу
Помогите составить программу на VB2010. Дана непустая строка S длиной не более...

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

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


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

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

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