Nicholas Saunders
Nicholas Saunders

Reputation: 764

how to export raw XML returned from Invoke-RestRequest with Export-CliXml?

How can I get the curl result of just <notes/>, from eXist, with PowerShell?

PS /home/nicholas> 
PS /home/nicholas> $url='http://localhost:8080/exist/rest/db/scripts/notes.xq'
PS /home/nicholas> 
PS /home/nicholas> $url                                                       
http://localhost:8080/exist/rest/db/scripts/notes.xq
PS /home/nicholas> 
PS /home/nicholas> $result=Invoke-RestMethod -Method Get -Uri $url -Headers @{"Content-Type" = "text/xml"}
PS /home/nicholas> 
PS /home/nicholas> $result

notes
-----


PS /home/nicholas> 
PS /home/nicholas> $result | Export-Clixml ./result.xml
PS /home/nicholas> 
PS /home/nicholas> Get-Content ./result.xml                                                               
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <XD>&lt;notes /&gt;</XD>
  </Obj>
</Objs>
PS /home/nicholas> 
PS /home/nicholas> exit
nicholas@mordor:~$ 
nicholas@mordor:~$ curl http://localhost:8080/exist/rest/db/scripts/notes.xq
<notes/>nicholas@mordor:~$ 
nicholas@mordor:~$ 

and why does the above XML have an XD tag, and to what end?

The help file states:

DESCRIPTION

The Export-Clixml cmdlet creates a Common Language Infrastructure (CLI) XML-based representation of an object or objects and stores it in a file. You can then use the Import-Clixml cmdlet to recreate the saved object based on the contents of that file. For more information about CLI, see Language independence (/dotnet/standard/language-independence).

This cmdlet is similar to `ConvertTo-Xml`, except that `Export-Clixml` stores the resulting XML in a file. `ConvertTo-XML` 
returns the XML, so you can continue to process it in PowerShell.

A valuable use of `Export-Clixml` on Windows computers is to export credentials and secure strings securely as XML. For an 
example, see Example 3.

Upvotes: 0

Views: 389

Answers (1)

Nicholas Saunders
Nicholas Saunders

Reputation: 764

invoking OuterXml works:

PS /home/nicholas> 
PS /home/nicholas> $url                                                                                   
http://localhost:8080/exist/rest/db/scripts/notes.xq
PS /home/nicholas> 
PS /home/nicholas> $result=Invoke-RestMethod -Method Get -Uri $url -Headers @{"Content-Type" = "text/xml"}
PS /home/nicholas> 
PS /home/nicholas> $result.OuterXml                                                                       
<notes />
PS /home/nicholas> 
PS /home/nicholas> ($result | ConvertTo-Xml).OuterXml                                                     
<?xml version="1.0" encoding="utf-8"?><Objects><Object Type="System.Xml.XmlDocument">System.Xml.XmlDocument</Object></Objects>
PS /home/nicholas> 

but how do you check that it's XML at all? or, even well-formed?

Upvotes: 0

Related Questions