Сбой синтаксического анализа XML - PullRequest
1 голос
/ 11 августа 2010

У меня это есть в XML-документе.

<userdata name='filter'>&SearchExpression[0].Key=Id&SearchExpression[0].Value=1&</userdata>

Значение - это запрос, который будет добавлен к URL-адресу.Там написано, что документ плохо отформатирован.Парсер указывает на скобку "["

Может ли скобка вызвать ошибку?

Как я могу разобрать файл XML с помощью скобок?

Ответы [ 3 ]

4 голосов
/ 11 августа 2010

Измените xml на это:

<userdata name='filter'><![CDATA[&SearchExpression[0].Key=Id&SearchExpression[0].Value=1&]]></userdata>

Это означает то же самое, но позволяет использовать специальные символы во внутреннем тексте элемента.
Вы можете узнать больше о CDATA здесь .

3 голосов
/ 11 августа 2010

Я подозреваю, что это на самом деле из-за амперсандов. Амперсанды должны быть экранированы в XML как &amp;. Ваш XML должен быть:

<userdata name='filter'>&amp;SearchExpression[0].Key=Id&amp;[...]</userdata>

Я предполагаю, что он выдал ошибку на [, потому что ожидал точку с запятой, думая, что SearchExpression было именем сущности (которое не может включать [).

Был ли этот документ отредактирован вручную или создан программой? Если он был сгенерирован автоматически (и это был ваш код), то вам следует начать использовать XML API для создания XML, а не выписывать строки вручную - они обрабатывают все это для вас.

1 голос
/ 11 августа 2010

Проблема возникает из незавершенных escape-последовательностей, начинающихся с &, вам нужно либо обернуть содержимое элемента в <![CDATA[ ]]>, либо экранировать & таким образом: &amp;

...