2015-04-27 4 views
-1

Я рассмотрел большую часть разбора XML в SQL со специальными Chars и не смог найти ничего подходящего, что не включало контроль над самим результатом XML. Я понимаю, что способ сделать это - убедиться, что все специальные символы экранированы, проблема заключается в том, что я не контролирую XML, который генерируется до тех пор, пока это не произойдет. Результат, который я мог бы иметь, может быть как-то вроде ниже. Мне нужно найти способ заменить все специальные символы внутри, не касаясь символов, которые действительны для xml. Это можно сделать с помощью CLR или в прямом SQL, я даже рассмотрю другие варианты.Анализ XML со специальными символами (SQL/CLR)

<?xml version="1.0" ?> 
<A> 
<B>this is my test <[email protected]</B> 
<B>>>>this is another test<<<</B> 
</A> 
+0

Это не XML. Вы должны перефразировать свой вопрос, поэтому ясно, что у вас есть текст, и вам нужно его разобрать определенным образом (правила, которые еще не включены в сообщение). Тот факт, что текст использует '<' and '>', не делает его XML. –

+0

это выдержка из xml-файла. (изменено для уменьшения риска защиты данных) –

+0

Я не уверен, почему вы продолжаете называть этот текст «XML» .... Во всяком случае, что-то вроде HtmlAgilityPack может прочесть его, но не ожидайте чудес - «мусор- в мусоре ». –

ответ

0

Возможно, вы ищете что-то похожее на содержимое HtmlEncode(). Прокрутите свою структуру XML и закодируйте поля, необходимые для записи в БД, и выполните HtmlDecode() при чтении из БД.

https://msdn.microsoft.com/en-us/library/w3te6wfz%28v=vs.110%29.aspx

+0

Я дам ему шанс, я просто чувствую, что любой xmlreader будет проходить через ошибки при попытке пропустить содержимое, потому что технически его недействительный xml со специальными символами там. –

+3

Это не «технически» недопустимый XML - это не XML. Вы не можете использовать синтаксический анализатор XML для анализа того, что не является XML. –

+1

Я не верю, что это где-то близко к ответу на вопрос OP, который звучит как «разобрать этот текстовый файл в XML-дерево» ... –

0

Если вы уверены, что имена XML элементов являются действительными, то решение может быть с помощью регулярных выражений для разбора XML в виде текста и заменить & с &amp; и> с &gt; и < с &lt;. Обратите внимание, например, regular expression to find special character & between xml tags.

Смежные вопросы