Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- .SYNOPSIS
- Transform an xml file
- .DESCRIPTION
- load a XML file and load a XSLT file, then transform the XML using the XSLT and output to the console
- .PARAMETER $xsltfilename
- The path to the XSLT file
- .PARAMETER $filename
- The path to the XML file to be transformed
- .EXAMPLE
- C:\PS>
- .\tranform.ps1 .\rgs_broke.xml .\fix_escalation.xslt > rgs_fixed.xml
- .NOTES
- Author: Alex McCool
- Date: Jan 17, 2017
- #>
- param(
- [Parameter(Mandatory=$true)]
- [string]$xsltfilename,
- [Parameter(Mandatory=$true)]
- [string]$filename
- )
- function Load-Xml
- {
- param([string]$filename)
- $content = Get-Content $filename
- $stream = new-object System.IO.MemoryStream
- $writer = new-object System.IO.StreamWriter($stream)
- $writer.Write("$content")
- $writer.Flush()
- $stream.position = 0
- $xml = new-object System.Xml.XmlTextReader($stream)
- return $xml
- }
- function Load-Xslt
- {
- param([string]$filename)
- $content = Get-Content $filename
- $stream = new-object System.IO.MemoryStream
- $writer = new-object System.IO.StreamWriter($stream)
- $writer.Write("$content")
- $writer.Flush()
- $stream.position = 0
- $reader = [System.Xml.XmlReader]::create($stream)
- $xslt = New-Object System.Xml.Xsl.XslCompiledTransform
- $xslt.Load($reader)
- return $xslt
- }
- $xml = Load-Xml($filename)
- $xslt = Load-Xslt($xsltfilename)
- $output = New-Object System.IO.MemoryStream
- $reader = new-object System.IO.StreamReader($output)
- $arglist = new-object System.Xml.Xsl.XsltArgumentList
- $xslt.Transform($xml, $arglist, $output)
- $output.position = 0
- $transformed = [string]$reader.ReadToEnd()
- $reader.Close()
- write-output $transformed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement