#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, экранируется, так что это не реальная проблема, это ожидаемое поведение.
У вас есть несколько вариантов, включая:
- Используйте хранимую процедуру, которая загружает и обрабатывает элемент Xml как Xml, а не строку в результате.
- При оркестровке извлеките элемент Xml, переформатируйте, чтобы включить корневой элемент, и создайте новое сообщение на основе этого.
Проблема в том, как были сохранены эти данные, а не в том, как SQL Server возвращает их или как BizTalk представляет их.