PowerShellでXPathの一覧を取得する
こんばんは、次男がようやく、お腹の調子が良くなり、本格的に離乳食開始!となる矢先、 再びお腹を壊し、前回以上に脱水症状がひどくなってしまい、少し 回復してきました。@kjunichiです。
v1なんですが、なんかもっといい方法無いですか?
某所で、node.jsを堂々と使えないので、Windowsに初めから入っているPowerShellに昨年あたりから 目をつけて色々今年になって成果が出つつあるような無いような。
$path="" function myWalk([Xml.Xpath.XPathNavigator]$n) { #write-output "walk start" # $n.Name if($n.haschildren) { # 子要素が存在する場合、パスに現在の要素名を追加する。 $path=$path + "/" + $n.Name } if($n.MoveToFirstChild()) { # Write-output "MoveToFirstChild" $path myWalk $n # Write-output "oops" if($n.MoveToParent()) { $tmp = $path.split("/") # $tmp # Write-output $tmp[1] # $tmp.length $path="" for($i = 1 ; $i -lt ($tmp.length -1); $i++) { $path = $path + "/" + $tmp[$i]; } } } # Write-output "afterMvChild" while($n.MoveToNext()) { # Write-output "MvNext" myWalk $n } #write-output "walk end" } $xml = [xml](get-content -encoding UTF8 D:\work\test.xml) Write-Host $xml $navi = [Xml.Xpath.XPathNavigator] $xml.CreateNavigator() $navi.MoveToFirstChild() [System.Xml.XmlNamespaceManager]$nsmgr=$navi.NameTable $nsmgr.AddNamespace('ns0',$navi.NamespaceURI) myWalk $navi
Link
関連記事