如何在 PowerShell 中更改 xml object 的版本 属性?
How to change version property of xml object in PowerShell?
我正在 PowerShell 中读取 xml 文件的内容,并在将其转换为 xml 之前更改其版本号(从 1.1 到 1.0),这样它就不会引发异常,因为据我所知,不支持 1.1 版。
然后我对内容做了一些更改,我想将它保存到一个文件中,但再次将版本从 1.0 更改为 1.1,就像我阅读它时一样。
以下是我使用的命令:
@'
<?xml version='1.1' encoding='UTF-8'?>
<Root>
<element1>
<string>name</string>
</element1>
<version>3.2.1</version>
</Root>
'@ | Out-File Demo.xml
$content = (Get-Content .\Demo.xml)
$replacedVersion = $content.Replace('<?xml version=''1.1'' encoding=''UTF-8''?>','<?xml version=''1.0'' encoding=''UTF-8''?>')
$XMLFile = [xml]$replacedVersion
// here I make my changes
// ...
$pathToSaveAt = "C:\MyDir\newFile.xml"
$XMLFile.Save($pathToSaveAt)
但我得到的结果是一个 xml 文件,其中 header 包含版本
<?xml version="1.0" encoding="UTF-8" ?>
我希望它是 1.1 版。
我试图获得的结果是一个 xml 文件,其内容为:
<?xml version='1.1' encoding='UTF-8'?>
<Root>
// all the changes I made
</Root>
我怎样才能做到这一点?
对你有帮助吗?
@'
<?xml version='1.1' encoding='UTF-8'?>
<Root>
<element1>
<string>name</string>
</element1>
<version>3.2.1</version>
</Root>
'@ | Out-File Demo.xml
$newContent = @()
$content = (Get-Content .\Demo.xml)
ForEach($Regel In $content){
if($Regel -match "<?xml*"){
$newContent +=$Regel
$newContent +=""
}
elseif ($Regel -match "<root>"){
$newContent += "<Root>"}
elseif ($Regel -match "</Root>"){
$newContent += "</Root>"
}
elseif (($Regel -match "<elem*")-or ($Regel -match "<version>3.*")){
$newContent += ' //test me'
}
}
$newContent |Out-File Cdemo.xml
输出文件是
<?xml version='1.1' encoding='UTF-8'?>
<Root>
//test me
//test me
</Root>
我正在 PowerShell 中读取 xml 文件的内容,并在将其转换为 xml 之前更改其版本号(从 1.1 到 1.0),这样它就不会引发异常,因为据我所知,不支持 1.1 版。
然后我对内容做了一些更改,我想将它保存到一个文件中,但再次将版本从 1.0 更改为 1.1,就像我阅读它时一样。
以下是我使用的命令:
@'
<?xml version='1.1' encoding='UTF-8'?>
<Root>
<element1>
<string>name</string>
</element1>
<version>3.2.1</version>
</Root>
'@ | Out-File Demo.xml
$content = (Get-Content .\Demo.xml)
$replacedVersion = $content.Replace('<?xml version=''1.1'' encoding=''UTF-8''?>','<?xml version=''1.0'' encoding=''UTF-8''?>')
$XMLFile = [xml]$replacedVersion
// here I make my changes
// ...
$pathToSaveAt = "C:\MyDir\newFile.xml"
$XMLFile.Save($pathToSaveAt)
但我得到的结果是一个 xml 文件,其中 header 包含版本
<?xml version="1.0" encoding="UTF-8" ?>
我希望它是 1.1 版。
我试图获得的结果是一个 xml 文件,其内容为:
<?xml version='1.1' encoding='UTF-8'?>
<Root>
// all the changes I made
</Root>
我怎样才能做到这一点?
对你有帮助吗?
@'
<?xml version='1.1' encoding='UTF-8'?>
<Root>
<element1>
<string>name</string>
</element1>
<version>3.2.1</version>
</Root>
'@ | Out-File Demo.xml
$newContent = @()
$content = (Get-Content .\Demo.xml)
ForEach($Regel In $content){
if($Regel -match "<?xml*"){
$newContent +=$Regel
$newContent +=""
}
elseif ($Regel -match "<root>"){
$newContent += "<Root>"}
elseif ($Regel -match "</Root>"){
$newContent += "</Root>"
}
elseif (($Regel -match "<elem*")-or ($Regel -match "<version>3.*")){
$newContent += ' //test me'
}
}
$newContent |Out-File Cdemo.xml
输出文件是
<?xml version='1.1' encoding='UTF-8'?>
<Root>
//test me
//test me
</Root>