R语言教程:XML 文件

2022-08-0219:02:06编程语言入门到精通Comments1,496 views字数 2046阅读模式

XML 指的是可扩展标记语言(eXtensible Markup Language),XML 被设计用来传输和存储数据。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

R 语言读写 XML 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")

查看是否安装成功:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

> any(grepl("XML",installed.packages()))
[1] TRUE

创建 sites.xml 文件,xml 文件与测试脚本同一目录下,代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

<sites> <site> <id>1</id> <name>Google</name> <url>www.google.com</url> <likes>111</likes> </site> <site> <id>2</id> <name>Runoob</name> <url>www.runoob.com</url> <likes>222</likes> </site> <site> <id>3</id> <name>Taobao</name> <url>www.taobao.com</url> <likes>333</likes> </site> </sites>

接下来我们可以使用 XML 包来载入 xml 文件的数据:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

# 载入 XML 包
library("XML")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 设置文件名
result <- xmlParse(file = "sites.xml")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 输出结果
print(result)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

统计 xml 数据量:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

# 载入 XML 包
library("XML")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 设置文件名
result <- xmlParse(file = "sites.xml")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 提取根节点
rootnode <- xmlRoot(result)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 统计数据量
rootsize <- xmlSize(rootnode)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 输出结果
print(rootsize)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

执行以上代码输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

[1] 3

查看节点数据,某一行使用 [ ], 指定的行和列使用 [[ ]]:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

# 载入 XML 包
library("XML")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 设置文件名
result <- xmlParse(file = "sites.xml")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 提取根节点
rootnode <- xmlRoot(result)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 查看第 2 个节点数据
print(rootnode[2])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 查看第 2 个节点的第  1 个数据
print(rootnode[[2]][[1]])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 查看第 2 个节点的第 3 个数据文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

print(rootnode[[2]][[3]])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

执行以上代码输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

$site
<site>
  <id>2</id>
  <name>Runoob</name>
  <url>www.runoob.com</url>
  <likes>222</likes>
</site> 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>www.runoob.com</url>

XML 转为数据列表

 文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

以上代码对输出都是 xml 格式,我们使用 xmlToList() 函数可以将文件对数据转为列表格式,更方便读取:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

# 载入 XML 包
library("XML")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 设置文件名
result <- xmlParse(file = "sites.xml")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 转为列表
xml_data <- xmlToList(result)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

print(xml_data)
print("============================")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# 输出第一行第二列的数据
print(xml_data[[1]][[2]])文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

执行以上代码输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

$site
$site$id
[1] "1"

$site$name
[1] "Google"

$site$url
[1] "www.google.com"

$site$likes
[1] "111"


$site
$site$id
[1] "2"

$site$name
[1] "Runoob"

$site$url
[1] "www.runoob.com"

$site$likes
[1] "222"


$site
$site$id
[1] "3"

$site$name
[1] "Taobao"

$site$url
[1] "www.taobao.com"

$site$likes
[1] "333"


[1] "============================"
[1] "Google"

XML 转为数据框

XML 文件数据可以转为数据框类型,这样我们就更方便对数据进行操作:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

实例

# 载入 XML 包
library("XML")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

# xml 文件数据转为数据框
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

执行以上代码输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html

  id   name            url likes
1  1 Google www.google.com   111
2  2 Runoob www.runoob.com   222
3  3 Taobao www.taobao.com   333
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26440.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26440.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定