non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

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

関連記事

 

9年前の記事

8年前の記事

3年後の記事

4年後の記事