xml文件相关

XML包
XML文件处理
XML文件:
XML文件格式是纯文本格式
组成:XML元素,每个XML元素包括一个开始标记(),一个结束标记()以及两个标记之间的内容
标记:是对文档存储格式和逻辑结构的描述
具体规则:
1、必须有声明语句
XML声明是XML文档的第一句,其格式如下:
2、注意大小写
在XML文档中,大小写是有区别的。注意在写元素时,前后标记的大小写要保持一致。最好养成一种习惯,或者全部大写,或者全部小写,或者大写第一个字母,这样可以减少因为大小写不匹配而产生的文档错误。
3、XML文档有且只有一个根元素
XML文档必须有一个根元素,就是紧接着声明后面建立的第一个元素,其他元素都是这个根元素的子元素,根元素完全包括文档中其他所有的元素。根元素的起始标记要放在所有其他元素的起始标记之前;根元素的结束标记要放在所有其他元素的结束标记之后。
4、属性值使用引号
在HTML代码里面,属性值可以加引号,也可以不加。但是XML规定,所有属性值必须加引号(可以是单引号,也可以是双引号,建议使用双引号),否则将被视为错误。
5、所有的标记必须有相应的结束标记
在HTML中,标记可以不成对出现,而在XML中,所有标记必须成对出现,有一个开始标记,就必须有一个结束标记,否则将被视为错误
6、所有的空标记也必须被关闭
空标记是指标记对之间没有内容的标记,比如“”等标记。在XML中,规定所有的标记必须有结束标记。

1.读取xml文件:xmlParse()函数

# Give the input file name to the function.
result <- xmlParse(file = "./clinical/142aea0e-7a7b-4ac4-9dbb-0f62e2379599/nationwidechildrens.org_clinical.TCGA-W5-AA2O.xml")

2.获取XML文件中存在的节点数:

# 提取xml文件的根节点,一般情况下,一个xml文件只有一个根节点
rootnode <- xmlRoot(result)

# 获取根节点下的一级子节点的个数
rootsize <- xmlSize(rootnode)
# 查看一级子节点的信息
print(rootnode[1])
print(rootnode[2])

3. 查看节点中的不同元素:提取xml中的信息类似于list取子集

print(rootnode[[1]][[1]])
print(rootnode[[1]][[5]])
print(rootnode[[2]][[2]])

4. 将xml文件转换为数据框

xmlToDataFrame(doc, colClasses = NULL, homogeneous = NA,
collectNames = TRUE, nodes = list(),
stringsAsFactors = default.stringsAsFactors())

doc:xml文档,可以是整个文档,也可以是经过rootnode[]提取的子集,注意只能使用1个中括号

#注意对比以下结果的区别
tmp0 <- xmlToDataFrame(result)
tmp <- xmlToDataFrame(rootnode[2]) #正确选项
tmp1 <- xmlToDataFrame(rootnode[[2]])

5. 将xml文件转换为list:

xmlToList(node, addAttributes = TRUE, simplify = FALSE)

xmlToList(result)
l1 <- xmlToList(rootnode[[1]])
l1[[1]][[1]]
L1 <- unlist(l1)
out <- data.frame()
for(i in 1:length(l1)){
 #out[i,] <- 
  print(l1[[i]][[1]])
  print(names(l1[[i]]))
}
class(l1[[1]][[1]])
length(l1)
cbind()
l2 <- xmlToList(rootnode[[2]])

你可能感兴趣的:(xml文件相关)