Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic .NET

Войти
Регистрация
Восстановить пароль
 
imenotyouarenot
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
#1

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

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

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

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

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

Как записать в string строку, содержащую кавычки - Visual Basic .NET
Dim teststr1 As String = "" мне надо в tsetstr1 записать строчку ввида "\текст\2\текст\текст" "\текст\текст\*fid\0". под...

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

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

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

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

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

5
diadiavova
1843 / 979 / 270
Регистрация: 11.04.2015
Сообщений: 1,814
Записей в блоге: 31
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
1843 / 979 / 270
Регистрация: 11.04.2015
Сообщений: 1,814
Записей в блоге: 31
06.07.2015, 17:32 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от imenotyouarenot Посмотреть сообщение
Допустим, у меня строка
Это весь документ, пришедший с сервера?
Цитата Сообщение от imenotyouarenot Посмотреть сообщение
Рога & Копыта
Ну по идее такие варианты приходить не должны. Если это твой документ, то замени амперсанд на &amp;
2
imenotyouarenot
5 / 5 / 2
Регистрация: 06.07.2015
Сообщений: 22
06.07.2015, 17:36  [ТС] #5
Цитата Сообщение от diadiavova Посмотреть сообщение
Это весь документ, пришедший с сервера?
Не весь, только для примера)
Цитата Сообщение от diadiavova Посмотреть сообщение
Ну по идее такие варианты приходить не должны. Если это твой документ, то замени амперсанд на &amp;
Помогло, спасибо!

А есть еще какие-то символы, которые могут вызвать подобную ошибку?
0
diadiavova
1843 / 979 / 270
Регистрация: 11.04.2015
Сообщений: 1,814
Записей в блоге: 31
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
Привет! Вот еще темы с ответами:

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

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

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

2.7. Ввести строку, содержащую цифры, буквы, символы. Преобразовать её, удалив каждый символ «*» и повторив к - VBA
Ввести строку, содержащую цифры, буквы, символы. Преобразовать её, удалив каждый символ «*» и повторив каждую цифру Сделал функцию на...


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

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

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