【2023年】これからブログを始める人へおすすめの書籍

Kissy

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