目次

目的

主に内部Cレベルオブジェクトに基づくXpath式の振る舞い方を調べる。

パッケージ本家

http://www.omegahat.org/RSXML/

SAX

xml文書をTree構造ではなくline構造で処理できるようにする。

xmlEventParse()

Xpath式

getSibling

内部オブジェクトを利用したサンプル

内部オブジェクトでxmlを指定すると、ポインタでの操作になるため、Xpath式で検索を行う必要がある(らしい)。
ちなみにサンプルデータはiTunesのプロパティリストファイルだ。
これをうまく使うと、自分が持っているiTunesでのアーティストの分析ができそうだ。

library(XML)
fileName <- system.file("exampleData", "iTunes.plist", package = "XML")
doc <- xmlTreeParse(fileName, useInternal = TRUE)
nodes <- getNodeSet(doc, "//key[text() = 'Artist']")
sapply(nodes, function(x)  xmlValue(getSibling(x)))

実行結果

> library(XML)
> fileName <- system.file("exampleData", "iTunes.plist", package = "XML")
> doc <- xmlTreeParse(fileName, useInternal = TRUE)
> nodes <- getNodeSet(doc, "//key[text() = 'Artist']")
> sapply(nodes, function(x)  xmlValue(getSibling(x)))
[1] "Norah Jones" "Norah Jones" 

getNodeSet関数でターゲットの内部クラスとXpath式を指定する。
内部クラス:doc Xpath式://key[text() = 'Artist']
xmlValue(getSibling(x))で値を取り出す。
ここでは、"Norah Jones"が2つ取り出された。

サンプルデータ:iTunes.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Major Version</key><integer>1</integer>
	<key>Minor Version</key><integer>1</integer>
	<key>Application Version</key><string>7.5</string>
	<key>Features</key><integer>1</integer>
	<key>Show Content Ratings</key><true/>
	<key>Music Folder</key><string>file://localhost/Users/duncan/Music/iTunes/iTunes%20Music/</string>
	<key>Library Persistent ID</key><string>BD55EC2E7FDB1DAE</string>
	<key>Tracks</key>
	<dict>
		<key>181</key>
		<dict>
			<key>Track ID</key><integer>181</integer>
			<key>Name</key><string>Don't Know Why</string>
			<key>Artist</key><string>Norah Jones</string>
			<key>Composer</key><string>Jesse Harris</string>
			<key>Album</key><string>Come Away With Me</string>
			<key>Genre</key><string>Jazz</string>
			<key>Kind</key><string>AAC audio file</string>
			<key>Size</key><integer>3031411</integer>
			<key>Total Time</key><integer>186152</integer>
			<key>Disc Number</key><integer>1</integer>
			<key>Disc Count</key><integer>1</integer>
			<key>Track Number</key><integer>1</integer>
			<key>Track Count</key><integer>14</integer>
			<key>Year</key><integer>2002</integer>
			<key>Date Modified</key><date>2007-02-05T10:46:04Z</date>
			<key>Date Added</key><date>2005-08-22T21:14:30Z</date>
			<key>Bit Rate</key><integer>128</integer>
			<key>Sample Rate</key><integer>44100</integer>
			<key>Play Count</key><integer>24</integer>
			<key>Play Date</key><integer>3274252284</integer>
			<key>Play Date UTC</key><date>2007-10-02T21:31:24Z</date>
			<key>Persistent ID</key><string>D7F9F158A4A48E53</string>
			<key>Track Type</key><string>File</string>
			<key>Location</key><string>file://localhost/Users/duncan/Music/iTunes/iTunes%20Music/Norah%20Jones/Come%20Away%20With%20Me/01%20Don't%20Know%20Why.m4a</string>
			<key>File Folder Count</key><integer>-1</integer>
			<key>Library Folder Count</key><integer>-1</integer>
		</dict>
		<key>182</key>
		<dict>
			<key>Track ID</key><integer>182</integer>
			<key>Name</key><string>Seven Years</string>
			<key>Artist</key><string>Norah Jones</string>
			<key>Composer</key><string>Lee Alexander</string>
			<key>Album</key><string>Come Away With Me</string>
			<key>Genre</key><string>Jazz</string>
			<key>Kind</key><string>AAC audio file</string>
			<key>Size</key><integer>2376546</integer>
			<key>Total Time</key><integer>145262</integer>
			<key>Disc Number</key><integer>1</integer>
			<key>Disc Count</key><integer>1</integer>
			<key>Track Number</key><integer>2</integer>
			<key>Track Count</key><integer>14</integer>
			<key>Year</key><integer>2002</integer>
			<key>Date Modified</key><date>2007-02-05T10:46:05Z</date>
			<key>Date Added</key><date>2005-08-22T21:14:49Z</date>
			<key>Bit Rate</key><integer>128</integer>
			<key>Sample Rate</key><integer>44100</integer>
			<key>Play Count</key><integer>23</integer>
			<key>Play Date</key><integer>3274252429</integer>
			<key>Play Date UTC</key><date>2007-10-02T21:33:49Z</date>
			<key>Persistent ID</key><string>D7F9F158A4A48E54</string>
			<key>Track Type</key><string>File</string>
			<key>Location</key><string>file://localhost/Users/duncan/Music/iTunes/iTunes%20Music/Norah%20Jones/Come%20Away%20With%20Me/02%20Seven%20Years.m4a</string>
			<key>File Folder Count</key><integer>-1</integer>
			<key>Library Folder Count</key><integer>-1</integer>
		</dict>
	</dict>
</dict>
</plist>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17