Объединение строк в XML-данных с помощью Bash - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь опубликовать XML в API с Bash. Некоторые XML-данные не могут вернуть правильный ответ, так как структура этих файлов неверна. и причина этого пробела между специальной строкой, если строка имеет длину более 80 столбцов, то строка продолжается от новой строки и оставляется «незамкнутыми» тегами xml. помогите раскрыть это дело.

Мне нужно объединить строки в теге «onedictvalue>» (13 строк) или удалить пробел между символами «]» (15 строк).

Может быть, есть код настройки, который не ограничивает размер столбца 80?

xml body.

<?xml version="1.0"?>
 <document>
   <function name="catalogAddRecord">
     <param name="ittinbalasy">545</param>
     <param name="atananalet">45464</param>
     <param name="albasty">29417</param>
     <param name="zheksuryn">4</param>
     <param name="onbagan">999</param>=
     <param name="dictrecords">
       <onedictvalue>
         <fieldid>12439</fieldid>
         <values>
           <value><![CDATA[Блаала/Есин барда елинди тап/Кырсык келсе су куриды
 нционного ввывыв/Департа/Управление вывывввввввввыыыыыыыввввввввввввввввввыв и
  работы с кукуку йцйцыфыфыф/Отывававвававаывыыыыыыыыыыыыыыыыыыывывы/Группа №4]
 ]></value>
         </values>
       </onedictvalue>
     </param>
   </function>
   <client name="InternalSite" version="0.01"/>
 </document>

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Эта задача решается заданным кодом при инициализации conect для oracle, чтобы получить данные XML из столбца lob. Соединение по умолчанию занимало 80 символов в строке, теперь 700. Спасибо всем за внимание.

data="$(
$DBCLPATH/sqlplus -s $DBUSER@$DBNAME/****<<EOF
set head off
**SET LINESIZE 700**
select to_char(d."depts".getCLOBVal())||';' AS xml_val FROM dwh_stage.motiw_insert_rows d WHERE rownum < 20;
EOF
)"
1 голос
/ 14 мая 2019

Обычно я бы предложил использовать XML-парсер, такой как xmlstarlet или что-то в этом порядке.Но поскольку вы работаете с испорченными XML-файлами, CDATA не закрывается должным образом из-за неприятного перевода строки, я мог бы предложить что-то вроде этого:

$ cat file.xml | tr '\n' '\0' | sed 's/]\r\?\x0\]>/]]>/g' | tr '\0' '\n'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...