どのように変換したいXMLデータへのデータです。フレーム?

StackOverflow https://stackoverflow.com/questions/2067098

  •  20-09-2019
  •  | 
  •  

質問

私を学習しようとしているR XML パッケージです。私はその実現に努めています。フレームからbooks.xml サンプルをxmlデータファイルです。こちらは何を取得します:

library(XML)
books <- "http://www.w3schools.com/XQuery/books.xml"
doc <- xmlTreeParse(books, useInternalNodes = TRUE)
doc
xpathApply(doc, "//book", function(x) do.call(paste, as.list(xmlValue(x))))
xpathSApply(doc, "//book", function(x) strsplit(xmlValue(x), " "))
xpathSApply(doc, "//book/child::*", xmlValue)

これらの各xpathSApplyのない私も思います。については如何に考えるべきであ進に向けた正しい形式になっています。フレーム?

役に立ちましたか?

解決

通常、私はあなたがいてこのことについて、 xmlToDataFrame() 機能するとともに、これは実際にかなり難していないのでも構います。

のものをお勧めしますとこの機能:

xmlToList(books)

ひとつの問題は、複数の著者本が必要となりますのでどう扱うことが構造化データフレーム。

一度決まっていうのは複数の著者の問題、それはかなり真っ直ぐにサイトを置き換えるだけでなく図書館案内サービスへのデータフレームの ldply() 機能plyr(又は使おうlapply変換の返り値が入ります。フレームを用います。コール"rbind"...).

こちらの完全な例を除くの著):

library(XML)
books <-  "w3schools.com/xsl/books.xml"
library(plyr)
ldply(xmlToList(books), function(x) { data.frame(x[!names(x)=="author"]) } )

   .id        title.text title..attrs year price   .attrs
 1 book  Everyday Italian           en 2005 30.00  COOKING
 2 book      Harry Potter           en 2005 29.99 CHILDREN
 3 book XQuery Kick Start           en 2003 49.99      WEB
 4 book      Learning XML           en 2003 39.95      WEB

このように著者含まれます。を使用する必要があり ldply このインスタンスのリストは"ギザギザ"...lapplyだけでは対応できない。[その他利用できる lapplyrbind.fill (提供:ハドレー)ですが、なぜわざわざき plyr 自動いたします。:

ldply(xmlToList(books), data.frame)

   .id        title.text title..attrs              author year price   .attrs
1 book  Everyday Italian           en Giada De Laurentiis 2005 30.00  COOKING
2 book      Harry Potter           en        J K. Rowling 2005 29.99 CHILDREN
3 book XQuery Kick Start           en      James McGovern 2003 49.99      WEB
4 book      Learning XML           en         Erik T. Ray 2003 39.95      WEB
     author.1   author.2   author.3               author.4
1        <NA>       <NA>       <NA>                   <NA>
2        <NA>       <NA>       <NA>                   <NA>
3 Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan
4        <NA>       <NA>       <NA>                   <NA>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top