2017-04-25 23 views
2

獲得單個XML元素我有一個xml文件「1.XML」:如何在PowerShell中

<configuration > 
    <application> 
    <name>My Application</name> 
    </application> 
    <log level="info" /> 
</configuration> 

,並希望節點從「我的應用」到「名從Powershell的」改變名文本。我可以這樣做:

$xml = [xml](Get-Content "1.xml"); 
$nameNode = $xml.configuration.application.ChildNodes.Item(0); 
$nameNode.InnerText = "Name from Powershell"; 

但我不喜歡通過索引獲取節點的想法。我想通過名字得到它。但這個變種不適用於我:

$nameNode = $xml.configuration.application.name; 

$nameNode = $xml.SelectSingleNode("//configuration/application/name"); 

有沒有一種簡單的方法來獲取在PowerShell中按名稱元素?

+3

'$ xml.configuration.application.name'肯定有效,並將其設置爲新值可更改元素內容。如果它「不適合你」,那麼你必須更具體地瞭解它不起作用。 –

回答

2

以下作品適合我。正如@Jeroen所說的,你必須更加具體,並提供一個可運行的腳本來顯示什麼不起作用。

$xml = [xml]@" 
<configuration > 
    <application> 
    <name>My Application</name> 
    </application> 
    <log level="info" /> 
</configuration> 
"@ 

$xml.configuration.application.name # Outputs "My Application" 
$xml.configuration.application.name = "Test" 
$xml.configuration.application.name # Outputs "Test" 
+1

Lieven和@Jeroen,你說得對,'$ xml.configuration.application.name'起作用。我的錯誤是:我認爲它返回一個帶屬性的對象,並試圖做這樣的事情:'$ xml.configuration.application.name.InnerText =「Test」' – elshev

+0

那裏有。 –