使用R语言将XML转换为CSV

这里使用的xml文件为CASOS提供的数据集company.xml

首先分析xml文件,截取一段xml代码

 1 <DynamicNetwork>
 2 <MetaNetwork>
 3 <nodes>
 4 <nodeclass type="agent" id="agent">
 5 <node id="LDR" title="Project Manager" />
 6 <node id="Mgr1" title="Art Director" />
 7 </nodeclass>
 8 <nodeclass type="task" id="task">
 9 <node id="T1" title="Project Management" />
10 <node id="T2" title="Administration" />
11 </nodeclass>
12 </nodes>
13 <networks>
14 <network sourceType="agent" targetType="agent" id="agent x agent">
15 <link source="LDR" target="Mgr1" type="double" value="1.0000" />
16 <link source="LDR" target="Mgr2" type="double" value="1.0000" />
17 </network>
18 </DynamicNetwork>
19 </MetaNetwork>    

可以看到,在根节点底下有nodes和network两大类,需要提取的是在nodes这个节点下id和title的属性值,network节点下source和target的值,确定需要用到的组成csv文件的属性后,开始对xml文件进行处理。

①首先在R中加载xml包,读取xml文件

# Load the package required to read XML files.
library("XML");

# Also load the other required package.
library("methods");

# Give the input file name to the function.
xmlfile <- xmlParse(file="company.xml")

②找到根节点,确定所需要的属性值在哪个节点下

#找到根节点
xmltop = xmlRoot(xmlfile) 
# 得到id=agent类的node目录
#xmltop[[1]][[1]][[1]]
# 得到id=knowledge类的node目录
#xmltop[[1]][[1]][[2]]
# 得到id=task类的node目录
#xmltop[[1]][[1]][[3]]
#得到id=agent x agent类的network目录
#xmltop[[1]][[2]][[1]]
#得到id=agent x knowledge类的network目录
#xmltop[[1]][[2]][[2]]
#得到id=agent x task类的network目录
#xmltop[[1]][[2]][[3]]

 ③初始化一个向量,存储id的值,在最后将得到的几个向量组成一个数据框datafram对构造getNode函数,获得node的id属性值

由于没有找到R中相关的函数,所以自己写了一个repeat循环

getNodeId <- function(index){
  #初始化向量nodes_id_temp,存储当前参数下获得的节点的id值
  nodes_id_temp <- vector()
  #初始化i
  i<-1
  #获得当前节点总数
  n <- xmlSize(xmltop[[1]][[1]][[index]])
  repeat{
    temp=xmlGetAttr(xmltop[[1]][[1]][[index]][[i]],name="id")
    nodes_id_temp[i] <- temp
    #print(nodes_id_temp[i])
    i<-i+1
    if (i > n)
      break;
  }
  nodes_id <<- c(nodes_id,nodes_id_temp)
}

  

  

时间: 2024-10-11 01:11:14

使用R语言将XML转换为CSV的相关文章

在 SPSS Statistics 和 Modeler 中调用 R 语言的实现和应用

http://www.ibm.com/developerworks/cn/data/library/ba/ba-1401spss-r/index.html 登录 | 注册   IBM 技术主题 软件下载 社区 技术讲座 搜索 developerWorks 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Delicious Linked In developerWorks 中国 技术主题 Information Mana

逻辑回归算法实现_基于R语言

逻辑回归(Logistic Regression)模型和线性回归非常相似,可以说就是在逻辑回归的基础上加上了一步逻辑转换,也就是因为这个转换,使逻辑回归模型非常适用于二分类问题的概率预测.本文主要详述逻辑回归模型的基础以及逻辑回归模型的R语言实现. 一.逻辑回归模型原理 首先要讲一下线性回归在预测分类事件中的缺点:线性回归模型的泛化能力很差,如果训练集存在噪点,会导致模型的结果特别差,不同样本建立起来的模型分割点不同:下图中根据年龄预测是否成年的分类问题,斜线就是根据训练集拟合出来的线性回归模型

【转】R语言主成分分析(PCA)

https://www.cnblogs.com/jin-liang/p/9064020.html 数据的导入 > data=read.csv('F:/R语言工作空间/pca/data.csv') #数据的导入 > > ls(data) #ls()函数列出所有变量 [1] "X" "不良贷款率" "存贷款比率" "存款增长率" "贷款增长率" "流动比率" "收

R语言XML格式数据导入与处理

数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,它仅仅是存储数据.事实上它与其他数据表现形式最大的不同是:它极其简单,这是一个看上去有点琐细的优点,但正是这点使它与众不同. 针对XML格式数据,R语言XML包可以对其进行数据导入与处理,详见下面的案例说明. 案例1 直接输入一段标

R语言读取csv中的内容

1992年,R语言诞生.R语言是PC和Linux时代的产物,R语言和贝尔实验室开发的S语言类似,R支持一系列分析技术,包括统计分析.预测建模.数据可视化.在CRAN上可以找到众多的扩张包. R软件 的首选界面是命令行界面,通过编写脚本来调用相应的功能函数.同时,它也支持图形界面. R语言可以用来做数据挖掘,下面我们就用它来读取birth2.csv 中的内容. //birth2.csv ALGERIA ,36.4,14.6 CONGO ,37.3,8 EGYPT ,42.1,15.3 GHANA

R语言csv与txt文本读入区分(sep参数)

R语言csv与txt文本读入区分 R语言用来处理数据很方便,而处理数据的第一步是把数据读入内存空间,平时最常用的文本数据储存格式有两种: 一种是CSV(逗号分隔符文本)另一种是TXT(Tab分隔符或空格分隔符),有时候读这两种文件格式读入容易混淆. 1,我们读入数据的时候,一般写文件名有两种方式: (1)将储存数据的文件所在的目录设置为工作目录(setwd("file path")),读文件时只需要写文件名即可 1 setwd('C:/Data/mydata') 2 data <

R语言--CSV文件

本文记录学习R语言之读取和写入CSV文件,因本人学习过程看的资料比较琐碎,包括WSCSchool等网站以及一些R语言的书籍(包括PDF文件),内容如有雷同,万望见谅.本人谨作记录学习 工作路径 一般我们会设置一个工作路径,方便我们在该路径读取和写入文件 setwd():设置当前工作路径 getwd():获取当前工作路径 # 设置工作路径,即R从该路径读取/保存文件 setwd("D://Test/R") # 获取当前工作路径 getwd() 原文地址:https://www.cnblo

R语言快速上手入门

R语言快速上手入门 课程学习网址:http://www.xuetuwuyou.com/course/196 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本教程深入浅出地讲解如何使用R语言玩转数据.课程中涵盖R语言编程的方方面面,内容涉及R对象的类型.R的记号体系和环境系统.自定义函数.if else语句.for循环.S3类R的包系统以及调试工具等.本课程还通过示例演示如何进行向量化编程,从而对代码进行提速并尽可能地发挥R的潜能.本课程适合立志成为数据科学家的

R语言学习资源

入门视频教程 R语言初级课程(1)- R语言快速入门http://cos.name/videos/intro-2-r/ 代码 #对象 1+1*3 c(1,2,3,4,5) c('helloworld','i am a R user') c("hehe","haha") 1:6 6:1 exp(1:4) log(1:3) a<-c(1,2,3,4,5) a[1] a[1:3] a[-4] a>3 a[a>3] #数组,类型需要一致 x<-1:1