このページの本文へ

前へ 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,290
2
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥2,249
3
【Amazon.co.jp限定】Meta Quest 3S(128GB)購入で『Gorilla Tag』ゲームを無料プレゼント|VRヘッドセット|メモリが33%増加 | 2倍のグラフィック処理性能 |ワイヤレスのVR体験
【Amazon.co.jp限定】Meta Quest 3S(128GB)購入で『Gorilla Tag』ゲームを無料プレゼント|VRヘッドセット|メモリが33%増加 | 2倍のグラフィック処理性能 |ワイヤレスのVR体験
¥50,490
4
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
CIO フラットスパイラルケーブル CtoC (Type-C/USB-C) PD 急速充電 平型 磁石 マグネット吸着 まとまる 充電ケーブル PD 240W データ転送 480Mbps 形状記憶 iPhone 17 / 16 / 15 Macbook Pro/Air/iPad用/ノートパソコン Galaxy Google Pixel Android (ライトブラック, 1.5m)
¥1,980
5
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
ソニー ゲーミングイヤホン INZONE Buds:WF-G700N Fnatic監修/ワイヤレス / 低遅延2.4GHzワイヤレス接続 USBType-Cトランシーバー同梱/LE Audio対応/アクティブノイズキャンセリング/立体音響 / 最大約24時間バッテリー / 急速充電/マイク付き / PS5 スマホ PC Switch グラスパープル
¥20,800
6
【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,270
7
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 ホワイト
¥640
8
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
エレコム 電源タップ 6個口 3m 雷ガード 個別スイッチ ほこりシャッター付 耐熱 PSE技術基準適合 ブラック T-K6A-2630BK
¥1,590
9
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
Amazon Kindle Paperwhite (16GB) 7インチディスプレイ、色調調節ライト、12週間持続バッテリー、広告なし、ブラック
¥18,980
10
Anker Nano Charger (70W, 3 Ports) ブラック【 PD対応/PSE技術基準適合/折りたたみ式プラグ】iPhone 17 / 16 / 15シリーズ / Air MacBook Windows PC iPad Galaxy Android スマートフォン ノートPC 各種 その他機器対応
Anker Nano Charger (70W, 3 Ports) ブラック【 PD対応/PSE技術基準適合/折りたたみ式プラグ】iPhone 17 / 16 / 15シリーズ / Air MacBook Windows PC iPad Galaxy Android スマートフォン ノートPC 各種 その他機器対応
¥3,490

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

デジタル用語辞典

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