В моем приложении логики я использую функцию xpath (), чтобы получить значение. Я пробовал разные xpaths но получаю ошибку
'Недопустимые параметры функции языка шаблонов' xpath ': параметр' xpath 'должен быть поддерживаемым, правильно сформированным выражением XPath. Пожалуйста, смотрите https://aka.ms/logicexpressions#xpath для подробностей использования. '.
у меня есть следующий xml:
Я пытался:
@xpath(xml(<YourMessage>), '/*[local-name()=\"Envelope\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]/*[local-name()=\"Body\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]') @xpath(xml(<YourMessage>), 'string(/*[local-name()=\"Envelope\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]/*[local-name()=\"Body\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"])')
но получаю ту же ошибку
Я сделал то, что предложил Джон-305.
json(<Output>)['soap:Envelope']['soap:Body']
Возможно, вам лучше конвертировать в JSON и работать с данными в этом формате. По крайней мере, таким образом вы можете избавиться от всех глупых сложностей с пространством имен.
LogicApps внутренне ориентирован на JSON, поэтому в любом случае это будет немного более «правильным».
Примеры можно найти по адресу: JSONPath - XPath для JSON
И оценщик: JSONPath Online Evaluator
Если вам нужно значение одного из внутренних узлов, вы можете попробовать:
@xpath(<YourMessage>, 'string(/*[local-name()=\"Envelope\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]/*[local-name()=\"Body\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]/*[name()=\"SearchByABNv201408Response\"]/*[name()=\"ABRPayloadSearchResults\"]/*[name()=\"Request\"]/*[name()=\"identifierSearchRequest\"]/*[name()=\"authenticationGUID\"])')
Надеюсь, это направит вас в правильном направлении
Вы можете включить пространство имен в свой xpath, используя это выражение:
@xpath(YOURBODY, '/*[local-name()=\"Envelope\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]/*[local-name()=\"Body\" and namespace-uri()=\"http://schemas.xmlsoap.org/soap/envelope/\"]')