1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| function cree-catalogue{param([string]$catalogue, [string]$modele, [string]$transformXSL, [string]$formations, [string]$avec_prix="false")
$objcatalogue=get-item $catalogue
$objtransformxsl=get-item $transformxsl
$objmodele=get-item $modele
$objformations= get-item $formations
#copie du plan modele
trap{remove-item $catalogue}
copy-item $modele $catalogue
#création d'une transformation
[System.XML.XSL.XSLCompiledTransform]$transform=new-object -TypeName System.XML.XSL.XSLCompiledTransform
#chargement du fichier de transformation
$transform.Load($objtransformxsl.fullname)
[system.reflection.assembly]::loadwithpartialname("WindowsBase")
#obtention d'un pointeur de type package vers le fichier Word modele
[system.IO.Packaging.Package]$pack=[System.IO.Packaging.Package]::open("$catalogue",[System.IO.Filemode]::Open,[System.IO.FileAccess]::ReadWrite)
#on obtient un pointeur vers le flux de la part /word/document.xml
[System.IO.Stream]$streamR=$pack.GetPart("/word/document.xml").GetStream([System.IO.FileMode]::Open,[System.IO.FileAccess]::ReadWrite)
$streamR.setlength(0)
$streamR.flush()
#création d'un xml writer
[System.Xml.XmlWriter]$xmlwriter=[System.Xml.XmlWriter]::Create("c:\temp.xml")
#ajout de paramètres à la transformation
[system.xml.xsl.xsltargumentlist]$xslargs= new-object -TypeName system.xml.xsl.XsltArgumentList
$xslargs.addparam("avec_prix","",$avec_prix)
$transform.Transform("$formations",$xslargs,$xmlwriter)
$xmlwriter.flush()
$xmlwriter.Close()
[system.IO.filestream]$streamfile=New-Object -TypeName System.IO.FileStream -ArgumentList "c:\temp.xml","Open"
$bufSize= 1024
[Byte[]]$buf=[byte[]](,0x00 * $bufSize)
#$bytesRead= 1
$bytesRead = $streamfile.Read($buf, 0, $bufSize)
"test1"
$bytesRead
$buf
While($bytesRead -gt 0){
$streamR.Write($buf, 0, $bytesRead)
$bytesRead = $streamfile.Read($buf, 0, $bufSize)
$streamR.flush()
"test2"
$bytesRead
}
$streamR.flush()
#on obtient un pointeur vers le flux de du fichier XML transformé
$pack.flush()
$pack.close()
#fermeture des flux
$streamR.close()
} |
Partager