Я анализирую xml в oracle sql.
XMLType(replace(column1,'&','<![CDATA[&]]>')) //column1 is a column name that has xml data
Во время синтаксического анализа я временно оборачиваю '&' в CDATA, чтобы исключить любое исключение xml. После избавления от исключения, вызванного '&', я получаю "недопустимый символ 32 (''), найденный в имени или Nmtoken". Это из-за символа «<». </p>
E.g: <child> 40 < 50 </child> // This causes the above exception.
Итак, я попробовал нижеприведенное, и оно работает. символ, сопровождаемый пробелом) в CDATA. Но вышесказанное занимает немного времени. Поэтому я пытаюсь использовать регулярные выражения, чтобы сократить время. Кто-нибудь знает, как реализовать вышеупомянутое действие, используя регулярное выражение в Oracle sql ??
Input : <child> 40 & < 50 </child>
Expected Output : <child> 40 <![CDATA[&]]> <![CDATA[< ]]> 50 </child>
Примечание: замена '&' точкой с запятой и амперсандом иногда приводит к исключению 'ссылка на сущность не правильно сформирована' , Поэтому я решил обернуть в CDATA.