簡體   English   中英

如何在PowerShell中更改xml對象的版本屬性?

[英]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文件,其標頭包含版本

<?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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM