使用powershell进行Xslt转换



我需要使用powershell脚本来运行Xslt转换,该脚本递归地用于所有对象*.xml:

  • 加载文件
  • 转换它
  • 将具有相同文件名的输出保存在同一路径中

我觉得有点像

FolderToCheck = "MyFolder"
Get-ChildItem $FolderToCheck -Filter *.xml | ForEach-Object {
# declare Xslt script for transformation
[Xml]$Xslt_script = Get-content 'MyScript.xslt'
# read xml
$File = [xml](Get-Content $_.FullName)
# Run the transformation
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($Xslt_script)
$xslt.Transform($File,$File)

}

我总是犯错误。怎么了?你能建议修改什么吗?

感谢

感谢@Martin Honnen的建议,我对代码进行了如下修改:

Get-ChildItem $FolderToCheck -Filter *.xml | ForEach-Object {
# declare Xslt script for transformation
[Xml]$Xslt_script = Get-content 'MyScript.xsl'
# Create Output File Name
$dir = $_.DirectoryName
$BaseName = $_.Basename
$OutputFileName = $_.DirectoryName + '' + $_.Basename + '_v2.xml'
# Run the transformation
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($Xslt_script)
$xslt.Transform($_.FullName, $OutputFileName)
rm $_.FullName
}

有了这个,我可以生成我的*_v2.xml文件,然后删除原始文件。

非常感谢

最新更新