2013-06-17 2 views
2

У нас есть некоторые проблемы с графическим интерфейсом, которые преобразуют все наши xml-объекты в их символьный формат и хранятся в нашей базе данных Oracle. Самая большая проблема с " преобразуется в "в приведенных значений атрибутов XMLзаменить двойные кавычки в двойных кавычках

<?xml version=...> 
<Fetch searchstr=""brown fox" child* !"big planes"" begin="yesterday" ...> 
    <otherele>...</otherele> 
    <some>...</some> 
</Fetch> 

Мне нужно, чтобы исправить это путем преобразования его:.

<?xml version=...> 
<Fetch searchstr="&quot;brown fox&quot; child* !&quot;big planes&quot;" begin="yesterday" ...> 
    <otherele>...</otherele> 
    <some>...</some> 
</Fetch> 

Я написал это, чтобы исправить эту проблему и ее работает отлично.

set content = replace (content, 
         regexp_substr(content, '<Fetch searchstr=".+" begin='), 
         '<Fetch searchstr="' || 
         replace(regexp_replace(content, 
               '<Fetch searchstr="(.+)" begin=|.', 
               '\1'), 
           '"', '&quot;') 
         || '" begin=') 

Как я могу сделать это проще и эффективнее?

Спасибо!

ответ

0

Получить следующую подстроку:

"коричневая лиса" ребенок * "большие самолеты"

.. и заменить кавычки с: & Quot;

SET DECLARE OFF; 

SELECT SUBSTR(str, 1, INSTR(str, '""', 1, 1)) 
||  REPLACE(SUBSTR(str, INSTR(str, '""', 1, 1) + 1, INSTR(str, '""', -1, 1) - INSTR(str, '""', 1, 1)), '"', '&quot;') 
||  SUBSTR(str, INSTR(str, '""', -1, 1) + 1) 
AS col 
FROM 
(
SELECT '<?xml version=...><Fetch searchstr=""brown fox" child* !"big planes"" begin="yesterday" ...><otherele>...</otherele><some>...</some></Fetch>' AS str 
FROM DUAL 
); 

Результат:

<?xml version=...><Fetch searchstr="&quot;brown fox&quot; child* !&quot;big planes&quot;" begin="yesterday" ...><otherele>...</otherele><some>...</some></Fetch> 
Смежные вопросы