Как получить доступ к XML, который исходит из Dataweave

Я пытаюсь получить доступ к элементам в xml, который исходит из DataWeave. Он возвращает мне нулевые значения.

Скрипт DataWeave

%dw 1.0
%namespace ns0 urn:abc:dbc:Components
%output text/xml
---
ItemFee:{
    product_id:flowVars."Dept_id",
    TotalFees: sum payload.ns0#ItemResponse.ns0#Fees.*ns0#Fee.ns0#Fee
}

Сразу после этого dataweave у меня есть узел регистратора с сообщением ниже.

#[message.payload.ItemFee.TotalFees]

Я получаю сообщение об ошибке

Execution of the expression "message.payload.ItemFee.TotalFees" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: WeaveMessageProcessor$WeaveOutputHandler

Я хотел бы сказать здесь еще один момент. Когда я даю текст ниже в регистраторе сразу после «сообщения преобразования». Сообщение печатается в консоли без проблем. Но мне не удалось получить доступ к элементам в сообщении xml .#[message.payloadAs(java.lang.String)]


person Simbu    schedule 18.12.2015    source источник


Ответы (2)


Этот синтаксис MEL работает только с объектами Java. Поскольку вывод - это XML, вам нужно будет использовать функцию xpath3 MEL: https://docs.mulesoft.com/mule-user-guide/v/3.7/xpath#the-xpath3-function

Что-то вроде:

#[xpath3('//ItemFee/TotalFees').text]
person Ryan Carter    schedule 18.12.2015
comment
Когда я даю #[xpath3('//ItemFee/TotalFees').text] в моем регистраторе, он показывает, что в консоли появилось сообщение Null. INFO 2015-12-18 14:24:02,696 [[ebay_dec15th2015].HTTP_Listener_Configuration.worker.01] org.mule.api.processor.LoggerMessageProcessor: null Хотя я устанавливаю формат text / xml в Dataweaver. Когда он выходит из компонента «Сообщение преобразования», он выглядит как объект. - person Simbu; 18.12.2015
comment
Я хотел бы сказать здесь еще один момент. Когда я даю текст ниже в регистраторе сразу после «сообщения преобразования». Сообщение печатается в консоли без проблем. Но я не мог получить доступ к элементам в сообщении xml.#[message.payloadAs(java.lang.String)] - person Simbu; 18.12.2015
comment
Райан, есть ли способ печатать в консоли во время преобразования, как мы это делаем в XSLT или java? - person Satheesh Kumar; 01.02.2016

Спасибо, Райан. Ваш ответ мне помог. Я ввел ниже в свой регистратор. Тогда я смогу забрать предметы.

#[xpath3('//ItemFee/TotalFees')]

Раньше я пробовал эти вещи, я не уверен, почему они раньше не работали. Может быть, я упустил из виду проблему. :)

person Simbu    schedule 18.12.2015