R 语言学习教程,从入门到精通,R XML 文件使用(19)

1、R XML 文件

XML 指的是可扩展标记语言(eXtensible Markup Language),XML 被设计用来传输和存储数据。

R 语言读写 XML 文件需要安装扩展包,我们可以在 R 到控制台输入以下命令来安装:

r 复制代码
install.packages("XML", repos = "https://mirrors.ustc.edu.cn/CRAN/")

查看是否安装成功:

r 复制代码
> any(grepl("XML",installed.packages()))
[1] TRUE

创建 sites.xml 文件,xml 文件与测试脚本同一目录下,代码如下:

r 复制代码
<sites>
    <site>
        <id>1</id>
        <name>Google</name>
        <url>www.google.com</url>
        <likes>111</likes>
    </site>
 
    <site>
        <id>2</id>
        <name>Nhooo</name>
        <url>www.cainiaojc.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 文件的数据:

r 复制代码
# 载入 XML 包
library("XML")

# 设置文件名
result <- xmlParse(file = "sites.xml")
# 输出结果
print(result)

统计 xml 数据量:

r 复制代码
# 载入 XML 包
library("XML")

# 设置文件名
result <- xmlParse(file = "sites.xml")
# 提取根节点
rootnode <- xmlRoot(result)
# 统计数据量
rootsize <- xmlSize(rootnode)
# 输出结果
print(rootsize)

执行以上代码输出结果为:

r 复制代码
[1] 3

查看节点数据,某一行使用 [ ], 指定的行和列使用 [[ ]]:

r 复制代码
# 载入 XML 包
library("XML")
# 设置文件名
result <- xmlParse(file = "sites.xml")
# 提取根节点
rootnode <- xmlRoot(result)
# 查看第 2 个节点数据
print(rootnode[2])
# 查看第 2 个节点的第  1 个数据
print(rootnode[[2]][[1]])
# 查看第 2 个节点的第 3 个数据
print(rootnode[[2]][[3]])

执行以上代码输出结果为:

r 复制代码
$site
<site>
  <id>2</id>
  <name>Nhooo</name>
  <url>www.cainiaojc.com</url>
  <likes>222</likes>
</site> 
attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList"        
<id>2</id> 
<url>www.cainiaojc.com</url>

1.1、XML 转为数据列表

以上代码对输出都是 xml 格式,我们使用 xmlToList() 函数可以将文件对数据转为列表格式,更方便读取:

r 复制代码
# 载入 XML 包
library("XML")
# xml 文件数据转为数据框
xmldataframe <- xmlToDataFrame("sites.xml")
print(xmldataframe)

执行以上代码输出结果为:

r 复制代码
 id   name            url likes
1  1 Google www.google.com   111
2  2 Nhooo www.cainiaojc.com   222
3  3 Taobao www.taobao.com   333
相关推荐
threelab18 分钟前
07.three官方示例+编辑器+AI快速学习webgl_buffergeometry_attributes_integer
人工智能·学习·编辑器
半新半旧1 小时前
mongodb 学习笔记
笔记·学习·mongodb
小彭律师1 小时前
数字化工厂中央控制室驾驶舱系统架构文档
python
明月看潮生2 小时前
青少年编程与数学 02-019 Rust 编程基础 05课题、复合数据类型
开发语言·青少年编程·rust·编程与数学
幼稚诠释青春2 小时前
Java学习笔记(对象)
java·开发语言
old_power3 小时前
【Python】PDF文件处理(PyPDF2、borb、fitz)
python·pdf
测试开发Kevin3 小时前
从投入产出、效率、上手难易度等角度综合对比 pytest 和 unittest 框架
python·pytest
Wyc724093 小时前
JDBC:java与数据库连接,Maven,MyBatis
java·开发语言·数据库
强化学习与机器人控制仿真3 小时前
Newton GPU 机器人仿真器入门教程(零)— NVIDIA、DeepMind、Disney 联合推出
开发语言·人工智能·python·stm32·深度学习·机器人·自动驾驶
KY_chenzhao3 小时前
用R语言+随机森林玩转遥感空间预测-基于R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析
随机森林·机器学习·r语言·生态·遥感·空间预测