Hi,
I'm trying to change the xml format of an HTTP request to JSON format using the xpath expression in flow.
Here is my xml :
<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xml:base="https://tenant.sharepoint.com/sites/sitename/_api/"> <id>d1fd24b2-eeb1-4820-a545-f071653f467e</id> <title/> <updated>2017-12-01T10:40:43Z</updated> <entry m:etag=""4""> <id>cda821b5-e13b-4dff-9c2e-5be55f5fa3d1</id> <category term="SP.Data.EmployeesListItem" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/> <link rel="edit" href="Web/Lists(guid'5b359dba-549b-4210-8afa-5e4fe2aeb166')/Items(3431)"/> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/LineManager" type="application/atom+xml;type=entry" title="LineManager" href="Web/Lists(guid'5b359dba-549b-4210-8afa-5e4fe2aeb166')/Items(3431)/LineManager"> <m:inline> <entry> <id>4f07e464-50cd-4faf-8324-8a4b26878b5a</id> <category term="SP.Data.UserInfoItem" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/> <title/> <updated>2017-12-01T10:40:43Z</updated> <author> <name/> </author> <content type="application/xml"> <m: properties> <d:EMail>testemail@test.com</d:EMail> <d:Title>ps admin</d:Title> </m: properties> </content> </entry> </m:inline> </link> <title/> <updated>2017-12-01T10:40:43Z</updated> <author> <name/> </author> <content type="application/xml"> <m: properties> <d: PSFullName>PS Employee</d: PSFullName> </m: properties> </content> </entry> </feed>
Here is my expression :
I get the follwing error :
InvalidTemplate. Unable to process template language expressions in action 'Set_variable' inputs at line '1' and column '2158': 'The template language function 'xpath' parameters are invalid: the 'xpath' parameter must be a supported, well formed XPath expression. Please see https://aka.ms/logicexpressions#xpath for usage details.'.
The desired result is to retrieve the email address in the <d:Email > tag.
Thanks for any help in advance,
Macaurly.
Solved! Go to Solution.
why aren't you receiving that request in JSON?
gonna play with this a bit.
the main issue with the XPath here is because of the namespaces. XPath probably doesn't know what m or d are.
to perform query without caring about the namespace, you can use local-name()
try:
xpath(xml(outputs('Compose')), '//*[local-name()="properties"]/*[local-name()="EMail"]/text()')
Compose = XML string
why aren't you receiving that request in JSON?
gonna play with this a bit.
the main issue with the XPath here is because of the namespaces. XPath probably doesn't know what m or d are.
to perform query without caring about the namespace, you can use local-name()
try:
xpath(xml(outputs('Compose')), '//*[local-name()="properties"]/*[local-name()="EMail"]/text()')
Compose = XML string
Thanks for the reply John 🙂
Its a bit of a long story really as to why its coming back as XML. We have a list that exceeds the lookup limit in SharePoint Online, but because there is no $select on the SharePoint connector it fails as it tries to return too much data, as a work around we are using the Azure AD HTTP Connector which has no option to pass headers so it comes back as XML, hence why we are here 🙂
I'll try the XPath suggestion you posted, thank you.
Thanks John, this solves our problem 🙂
hi,
i have a similar issue here, but i am a bit confused about the wokraround you mentioned. what exactly does compose action have in "Compose = XML String"?
thanks in advance.
Very very very helpfull!!!
Guys!
Whats I have to do to get this three items?
Thank you for any help.
Robson.