4
我需要一些PowerShell幫助。它應該很容易:Powershell:從xml文件讀取值
我有一個子目錄的列表,每個文件中有一個xml文件。我想打開每個xml文件並打印一個節點的值。節點始終是相同的,因爲xml文件實際上是Visual Studio中的項目文件(* .csproj)。
我已經得到的文件列表:獲得項目** \ * .csproj的
我該如何繼續?
我需要一些PowerShell幫助。它應該很容易:Powershell:從xml文件讀取值
我有一個子目錄的列表,每個文件中有一個xml文件。我想打開每個xml文件並打印一個節點的值。節點始終是相同的,因爲xml文件實際上是Visual Studio中的項目文件(* .csproj)。
我已經得到的文件列表:獲得項目** \ * .csproj的
我該如何繼續?
要獲取的csproj文件使用Get-ChildItem
Get-ChildItem c:\myProjects *.csproj -recurse
然後你可以使用例如Select-Xml
是這樣的:
$ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }
Get-ChildItem c:\myProjects *.csproj -recurse |
Select-Xml -xpath '//defaultNamespace:PropertyGroup[1]' -namespace $ns |
Select-Object -expand Node
你必須糾正默認的命名空間。我現在手邊沒有csproj文件。
(有關XML和XPath在PowerShell中的詳細信息請參見http://huddledmasses.org/xpath-and-namespaces-in-powershell/)
的Select-Object
需要擴大實際的節點屬性。
如果你想使用XML就像對象,你可以使用這個:
Get-ChildItem c:\myProjects *.csproj -recurse |
% { $content = [xml](gc $_.FullName); $content.Project.PropertyGroup[someindex...] }