- Powershell概要
- powershellのxmlファイルを変数に格納する
- xmlの各要素にpowershellでアクセスする。
- xmlからタグを指定して全て抜き出す。
- xmlファイルの要素の修正
Powershell概要
powershellのxmlファイルを変数に格納する
サンプルコード1
$xml = [xml] (Get-Content powershell_blog.xml) $xml
実行結果1
xml xml-stylesheet rss --- -------------- --- rss
サンプルコード2
$xml.rss
実行結果2
version : 2.0 dc : http://purl.org/dc/elements/1.1/ slash : http://purl.org/rss/1.0/modules/slash/ wfw : http://wellformedweb.org/CommentAPI/ channel : channel
解説
powershellにはxmlを取り扱うための仕組みがすでに整っている。 そしてそのライブラリを取り扱うために新しくインストールする必要はなく、powershellの標準機能として搭載されている。
方法は簡単でxml文字列を[xml]として型宣言した変数に代入するだけ。 次のコードではGet-Contentによってファイル名を指定してxmlテキストを取得し、その内容を変数$xmlに代入している。
$xml = [xml] (Get-Content powershell_blog.xml)
xmlの各要素にpowershellでアクセスする。
サンプルコード
$xml = [xml] (Get-Content powershell_blog.xml) ($xml)[0]
- 実行結果
guid: guid title: "Windows PowerShell in Action" has been released comment: http://blogs.msdn.com/powershell/rsscomments.aspx?PostID=171 link: http://blogs.msdn.com/powershell/archive/2007/02/19/windows- pubDate: Mon, 19 Feb 2007 20:05:00 GMT comments: {4, http://blogs.msdn.com/powershell/comments/1718281.aspx} commentRss : http://blogs.msdn.com/powershell/commentrss.aspx?PostID=1718281 creator : PowerShellTeam
解説
xmlの各要素に対しては添字を使ってアクセスすることができる。
また、さらにその中の要素にタグを指定してアクセスしたい場合はドット繋ぎで指定してやればよい
サンプルコード
$xml = [xml] (Get-Content powershell_blog.xml) ($xml.rss.channel.item)[0].title
実行結果
"Windows PowerShell in Action" has been released
xmlからタグを指定して全て抜き出す。
パイプラインを用いてタグを全て抜き出すのがよい
サンプル
$xml | Sort-Object title | Select-Object title
実行結果
title ----- "Windows PowerShell in Action" has been released Controlling PowerShell Function (Re)Definition Execution Policy and Vista Executive Demo It's All about Economics NetCmdlets Beta 2 is now Available. Payette Podcast
xmlファイルの要素の修正
## ファイル名を取得する $filename = (Get-Item phone.xml).FullName $phoneBook = [xml] (Get-Content $filename) ## 変更する対象を指定する。 $person = $phoneBook.AddressBook.Person[0] ## personのうち、電話番号とタイプをかえる $person.Phone[0]."#text" = "555-1214" $person.Phone[0].type = "mobile" ## さらに新しい携帯番号を追加 $newNumber = [xml] '<Phone type="home">555-1215</Phone>' $newNode = $phoneBook.ImportNode($newNumber.Phone, $true) [void] $person.AppendChild($newNode) ## ここで保存可能 $phoneBook.Save($filename) Get-Content $filename
参考:海外版のpowershell pdfファイル
URL:http://index-of.co.uk/Microsoft-Windows-Ebooks/OReilly.Windows.PowerShell.Cookbook.Oct.2007.pdf
title:powershellによるxmlファイル作成 description:powershellでxmlを扱う方法を紹介します。 category_script:page_name.startswith("1")
page:https://minegishirei.hatenablog.com/entry/2024/05/21/120240