Следующий скрипт используется для преобразования XML-файла в правильный формат. Есть 4 этапа:
- Удалить все заголовки XML
- Оберните все содержимое в
testsuites
элементов - Добавить заголовок xml
- Удалить элементы
timestamp
из элементовtestsuite
param (
[string] $inputPath = $(throw "-inputPath is required."),
[string] $outputPath = $(throw "-outputPath is required.")
)
$content = Get-Content $inputPath
$replaced = $content -replace '\<\?xml version="1\.0" encoding="UTF-8" \?>', ""
Write-Output $replaced
$xmlHeader = '<?xml version="1.0" encoding="UTF-8" ?>'
$xmlcontent = $xmlHeader + '<testsuites>' + $replaced + '</testsuites>'
$xml = New-Object -TypeName System.Xml.XmlDocument
$xml.LoadXml($xmlcontent)
$xml.testsuites.testsuite[0].RemoveAttribute('timestamp')
$xml.testsuites.testsuite[1].RemoveAttribute('timestamp')
$xml.Save($outputPath)
Моя проблема в этом. Относительный входной путь всегда работает. Относительный выходной путь всегда помещает файл в c:\windows\system32
. Я понимаю, что это связано с рабочим каталогом Powershell по умолчанию, но я изо всех сил пытаюсь объяснить поведение входного пути моим коллегам.
Я называю команду так:
xmlscript.ps1 -inputPath 'file.xml' -outputPath 'final.xml