Получение данных из xml respose в nifi

После запуска процессора invokehttp я получаю такие данные ответа:

<Response xmlns="">
<Result>
<ResponseStatus>false</ResponseStatus>
<Error>
<ErrorCode>-7</ErrorCode>
<ErrorDescription>not foudn</ErrorDescription>
</Error>
</Result>
</Response>

Мне нужно значение ErrorCode (-7), поэтому я добавил процессор EvaluateXpath с атрибутом ErrorCode. Я использовал команду //Error/ErrorCode/text(), но он не может повторно получить данные кода ошибки в атрибуте ErrorCode (в потоковом файле после обработки Атрибут ErrorCode EvaluateXpath не имеет значения, это пустая строка) как я могу получить значение ErrrorCode?


person Community    schedule 23.08.2017    source источник


Ответы (1)


Чтобы извлечь желаемое значение, используйте выражение XPath //ErrorCode. Это вернет String значение -7. Выбрав Destination атрибут потокового файла, вы можете сохранить содержимое потокового файла постоянным и поместить это новое значение в атрибут потокового файла (т. Е. С именем attribute).

Конфигурация EvaluateXPath

Вы можете связать отношение matched с UpdateAttribute процессором, который имеет выражение ${attribute:toNumber()}, чтобы преобразовать его в числовое представление, т.е. ${attribute:toNumber():plus(10)} вернет 3.

Вывод LogAttribute

person Andy    schedule 23.08.2017