Как заменить < и

#biztalk #biztalk-2013

#biztalk #biztalk-2013

Вопрос:

Я новичок в BizTalk, и мне нужно прочитать некоторые значения из таблицы SQL Server. Пример результирующего набора, который я получаю, следующий:

 <SelectResponse 
xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/tableName">
    <SelectResult>
        <tableName xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
            <Message> amp;<item_1amp;> item_1Value amp;</item_1amp;>
                      amp;<item_2amp;> item_2Value amp;</item_2amp;>
                      amp;<item_3amp;> item_3Value amp;</item_3amp;>
                      amp;<item_namp;> item_3Value amp;</item_namp;> </Message>
         </tableName>
   </SelectResult>
</SelectResponse>
  

Итак, я получаю свое сообщение в BizTalk (схема автоматически генерируется из адаптера SQL). Чего я хочу, так это следующего:

 <SelectResponse 
xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/tableName">
    <SelectResult>
        <tableName xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">
            <Message> 
                <item_1> item_1Value </item_1>
                <item_2> item_2Value </item_2>
                <item_3> item_3Value </item_3>
                <item_n> item_3Value </item_n> 
             </Message>
         </tableName>
   </SelectResult>
</SelectResponse>
  

У меня есть новая схема (для item_1, item_2, …). Учитывая, что <Message> это может появляться несколько раз внутри сообщения BizTalk, какой самый простой способ получить то, что мне нужно, и как я могу это сделать? Спасибо.

Ответ №1:

Наиболее вероятная причина, по которой вы видите это, заключается в том, что элемент Xml content хранится в другой структуре Xml, Message. Xml, хранящийся в Xml, экранируется, так что это не реальная проблема, это ожидаемое поведение.

У вас есть несколько вариантов, включая:

  1. Используйте хранимую процедуру, которая загружает и обрабатывает элемент Xml как Xml, а не строку в результате.
  2. При оркестровке извлеките элемент Xml, переформатируйте, чтобы включить корневой элемент, и создайте новое сообщение на основе этого.

Проблема в том, как были сохранены эти данные, а не в том, как SQL Server возвращает их или как BizTalk представляет их.