窓辺の小石 第177回 アキレウスのかかと
マイナビニュース / 2024年8月2日 14時24分
この状態では、XMLはPowerShellの通常のオブジェクトのように扱えるため、
$xml.main.sub | Where-Object name -eq 's1'
のようにPowerShellのコマンドでオブジェクトのように扱える。ただし、subとSUBタグは同一視されている。
正しい方法はSelect-Xmlコマンドを使うものだ。これは、XMLオブジェクト(System.Xml.XmlDocument)からXPathを使って、正しく要素を取り出すコマンドだ。subタグのname属性を見たいなら、
(Select-Xml -Xml $xml -XPath "//sub/@name").node
とする。Select-Xmlコマンドの出力は、SelectXmlInfoというオブジェクトなので、そのnodeプロパティを展開することで中身が得られる。XPathオプションの引数を"//SUB/@Name"にすると、SUBタグのName属性を取り出せる。このようにSelect-Xmlを使うことで、大文字小文字を区別したタグや属性値のアクセスが行える。
Select-Xmlコマンドでは、XPathを使う必要があり、コマンド記述が結構面倒である。文字ケースが違うだけのタグがなければ、簡易な方法が利用できる。パイプラインを使って、XMLファイルをまとめてPowerShellのオブジェクトに変換するのも簡単だ。PSCustomObjectに必要な情報のみを入れてしまえば、あとは、ConvertTo系のコマンドが利用できる。
以下のコマンドは、フォントのソースコード(Windows Terminal付属のCascadiaフォント)から、glifファイル(中身はXML)にあるユニコードのコードポイント定義(のようなタグ)を取り出すもる。XMLの要素からPowerShellのオブジェクトを生成、これをCSVに変換する。ここまでできると、あとの処理や分析は、エクセル(PowerQuery利用)などで簡単に行える。
$myxml=[Xml]::new()
Get-ChildItem -Recurse -Filter *.glif | %{ $myxml.Load($_.FullName); $u=$myxml.glyph.unicode.hex;if($u -ne $null){foreach($uc in $u){[pscustomobject]@{Unicode=$uc;Name=$myxml.glyph.name}}}} | sort Unicode | ConvertTo-Csv
この記事に関連するニュース
-
窓辺の小石 第175回 Stream form Outer Network
マイナビニュース / 2024年7月19日 17時43分
-
日本語かなキーボードで「全角英文字」をサクサク入力するには? - いまさら聞けないiPhoneのなぜ
マイナビニュース / 2024年7月18日 11時15分
-
対応言語にPython、生成AIによるシナリオ作成機能も加わる「WinActor Ver.7.5.0」
マイナビニュース / 2024年7月12日 11時59分
-
今更more.comを使うのか!? Windowsでのページングを考える
ASCII.jp / 2024年7月10日 12時0分
-
英語で「大文字」はなんて言う?
OTONA SALONE / 2024年7月7日 12時30分
ランキング
-
1“北九州のソウルフード”資さんうどん、東京1号店は両国&今冬オープン 初上陸に歓喜の声
iza(イザ!) / 2024年8月2日 13時56分
-
2「天才では?」「早く知りたかった」 悪魔的発想の“ゆで卵の食べ方”がうまそうすぎると話題 「一生コレで食べてる」
ねとらぼ / 2024年8月2日 7時15分
-
3「泣きそう」「生きるって尊い」 HIKAKIN、“衝撃の重大発表”にネット感涙 「安心と感動がすごい」「本当におめでとうございます」
ねとらぼ / 2024年8月1日 22時1分
-
4偽Google多要素認証アプリに注意、最近インストールした場合は確認を
マイナビニュース / 2024年8月2日 12時56分
-
5「これはすごい!」 築500年の“やばい廃墟”を5年かけてリノベーションした結果→ビフォーアフターに驚愕の声 「圧巻!」「さすがにすてき」【海外】
ねとらぼ / 2024年8月2日 12時0分
複数ページをまたぐ記事です
記事の最終ページでミッション達成してください
![](/pc/img/mission/mission_close_icon.png)