PowerShellでXMLを探索するよ! | XPathNavigator

こんにちは!きっしーです。
今日は、PowerShellでXMLファイルを探索していきます。
サンプルはいつものXML(books.xml)を使います。
<?xml version="1.0" encoding="utf-8"?>
<books>
<book isbn="0123456789">
<title>ぶろぐはじめました</title>
<author>kissy</author>
<date>2017-09-02</date>
</book>
<book isbn="abcdefghij">
<title>PowerShellはじめました</title>
<author>kissy</author>
<date>2017-09-03</date>
</book>
<book isbn="987654321" tag="new">
<title>twitterはじめました</title>
<author>foo</author>
<date>2016-09-01</date>
</book>
</books>
PowerShellでXMLの要素を探索する方法はいくつかあります。
以前の記事ではWhere-Objectコマンドレッドを使用して探索しましたが、
今回は、XPathNavigatorを使用します。
- Where-Objectで絞り込む
- XPathを使って絞り込む
XPathNavigatorでXMLを絞り込む
XPathとは、XPath式によりXMLの要素を特定するものです。
何のことかわかりませんね。例をあげましょう。
"/books/book/title"というXPathがあったとします。
このXPathでは、books要素の子のbook要素の子のtitle要素すべてをあらわします。
つまり、このXPathでtitle要素がすべて取得できるということです。
XPathをつかうにはXPathNavigatorを使用します。
早速試してみましょう。
$xmldoc = [xml](Get-Content "c:\\temp\\books.xml")
$xmlnav = [Xml.Xpath.XPathNavigator]$xmldoc.CreateNavigator()
$nodes = $xmlnav.Select("/books/book/title")
While ($nodes.MoveNext())
{
$nodes.Current.ToString()
}
これでtitle要素がすべて表示されていると思います。
関連記事
SPONSORED LINK
SPONSORED LINK