このページの本文へ

前へ 1 2 次へ

Windows Info 第188回

Windows 10に標準搭載のUWPアプリの中身をさらに深掘りする

2019年09月01日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

構造がわかっているXMLファイルの内容を読み出す

 このようにXMLファイルは、HTMLのようにタグを使って階層構造を作っている。このため、構造がわかっているなら、特定の情報を取り出すのは非常に簡単である。前回も探したように、メッセージングアプリの日本語の表示名は、「AppListName」というリソースが使われる。具体的には、以下の図のような構造になっている。

MessagingのXMLファイルの中にあるAppListNameというリソースは、このような位置にある。アクセスするには、最上位のタグ(PriInfo)からタグ名を順に指定する方法と、SelectNodesメソッドとXPathを使う方法がある

このApplistNameをアクセスするには、以下のようにタグ名をつなげていけばよい。

XMLファイルの構造が分かっているなら、タグ名をピリオドで区切ってつないでいくと、XML内の情報にアクセスができる

$MsMessaging.PriInfo.ResourceMap.ResourceMapSubtree[4].NamedResource[0].Candidate.Value

 途中に数字が入るが、これは、ResourceMapSubtreeタグやNamedResourceタグが複数あり、どれであるかを順番で指定しているからだ(0番からの指定になるので5番目のものは4となる)。

 構造がはっきりとわかっていて、どこにあるのかがわかれば、XML内の情報はPowerShellではタグ名をピリオドで区切ってつなげていくことで取り出せる。とりあえず、これを基本として理解していただきたい。

 だが、この方法では、タグの数を数える必要もあれば、ファイルによっては個数や順番が違うかもしれない。このため、もう少し「検索」的に値を探す必要がある。それには、XMLで汎用に使われるXPathという表記方法とselectNodeというメソッドを使う必要がある。

 XPathとは、XML内の要素を自由に指定するための表記方法だ。イメージ的には、ファイルパスによく似ている。XPathでは、タグの名前を「/」で区切って、ファイルパスのように指定して情報の位置を指定できる。また、単なるパスだけでなく、さまざまな条件指定が行える。位置に依存しないようにするには、階層構造だけを指定して、以下のようなコマンドを使う。

$MsMessaging.SelectNodes("/PriInfo/ResourceMap/ResourceMapSubtree/NamedResource[@name='AppListName']").Candidate.value

 このコマンドでダブルクオートの中にある「/PriInfo……」という部分がXPathである。XPathでは、このようにタグの階層構造をスラッシュで区切って指定できる。また角カッコの中は、タグの属性の指定である。

 これは、正直に頭からタグの階層構造を指定しているが、一般的には、特定の目的で使われるXMLファイルでは解釈する都合から階層構造の上部は、固定されていることが多い。なので「/PriInfo/ResourceMap/」を省略できる可能性が高い(厳密には、XMLファイルの仕様を入手して理解する必要がある)。こういった場合、略記方法がある。1つは任意のタグを表す「*」である。これを使えば、タグ名を省略できる。もう1つは、任意の段数の階層構造を省略する「//」だ。この1つを使うと、前記の

$MsMessaging.SelectNodes("/PriInfo//*[@name='AppListName']").Candidate.value

とも書ける。さらに「AppListName」という文字列がタグの属性であるnameに設定されている(name="AppListName")任意のタグというXPath表記は以下のようになる。

$MsMessaging.SelectNodes("//*[@name='AppListName']").Candidate.Value

 Priから作られたリソースは、もともとが日本語リソースフォルダーからのものなので、他言語のタグなどがないはずなので、こんな短い指定でもほぼなんとかなる。

 では、別の例で見てみよう。Microsoft.BingNewsでは、AppxManifest.xmlでアプリの名称は、

DisplayName="ms-resource:ApplicationTitleWithTagline"

となっているので、「ApplicationTitleWithTagline」というリソースを探せばよい。すでにPriファイルからMicrosoft.BingNews.xmlができているとして、以下のような作業でタイトルを取り出すことができる。

$MsBingNews =[XML](Get-Content -Encoding UTF8 C:\temp\appxpri\Microsoft.BingNews.xml)
$MsBingNews.SelectNodes("//*[@name='ApplicationTitleWithTagline']").Candidate.value

とすればよい。これで「Microsoft ニュース」という表記が得られる。

BingNewsに関しても、同じようにXMLファイルを読み込み、AppManifest.xmlで見付けた「ApplicationTitleWithTagline」というリソース名を取り出せば、タイルなどに表示される日本語のアプリ名を取り出せる

 XMLの基本がわかったところで、次回は、AppManifest.xmlを解析する。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,390
2
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥660
3
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
4
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥980
5
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
6
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
CIO フラットスパイラルケーブル CtoC 1m (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps (ライトブラック, 1m)
¥1,780
7
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
8
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥1,880
9
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
10
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
Kindle Paperwhite シグニチャーエディション (32GB) 7インチディスプレイ、明るさ自動調整、色調調節ライト、12週間持続バッテリー、広告なし、メタリックブラック
¥23,980

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン