SQL-символы SQL 2005 Special / Escaped из System.Xml.XmlDocument.OuterXml

У меня есть XML, который создает с использованием объекта XmlDocument в C #.

Затем я вставляю XML-данные в столбец XML в SQL 2005 с помощью метода XmlDocument.OuterXml для получения необработанного xml.

Проблема в том, что xml содержит некоторые специальные символы. А именно: это потому, что xml создается из пользовательского ввода из разных источников.

Когда я выполняю вставку, я получаю сообщение об ошибке SQL, в котором разбор XML: незаконный символ xml.

CREATE TABLE #MyTable (MyColumn XML)
INSERT INTO #MyTable VALUES ('<Element>&#x1F;&#x1C;</Element>')

Msg 9420, уровень 16, состояние 1, строка 2

Разбор XML: строка 1, символ 15, незаконный символ xml

Может ли кто-нибудь указать мне, как я могу это решить?

Мне будет очень сложно что-либо изменить на объекте XmlDocument или на самом оригинальном xml, но я могу изменить механизм, который я использую для получения RAW XML. При необходимости я могу изменить настройки своей базы данных.

.net,sql,xml,sql-server-2005,

0

Ответов: 2


1 принят

Если у вас есть XmlDocument с недопустимыми символами, у вас в основном нет действительного XML. Невозможно представить что-либо ниже U + 0020, отличное от табуляции, возврата каретки и перевода строки в XML. Я не совсем уверен, почему, но это недопустимый XML в соответствии со спецификацией.

Вы можете сохранить исходный текст недопустимого XML в базе данных, но я предполагаю, что есть причина, по которой вы хотели, чтобы это был столбец XML в первую очередь :)

Вы действительно хотите сохранить этот недопустимый XML? Вы знаете, откуда оно взялось и требуется ли это? Я лично попытался бы очистить данные везде, где это возможно.

(Btw, первый сброс данных переполнения стека имел очень похожую проблему, так что это не только вы :)


0

Это возможно INSERT INTO #MYTable VALUES ('& # x1F;')

Я добавляю пространства для ясности

INSERT INTO #MYTable VALUES ('<E lement> & amp; # x 1 F; </ E lement>')

.net, SQL, XML, SQL-сервер 2005,
Похожие вопросы