====== read data between XML tags ====== * file: Node auslesen_BspTabelle.r * document page: 19 \\ **code:** #----open XML package------------------------------------------------- library(XML) #----read data between an XML tag------------------------------------- filename = "D:/Heidi/Master/R_Daten/XML/Beispiel.xml" tag = "//Fst" doc = xmlTreeParse(filename, useInternal = TRUE) ch = getNodeSet(doc, tag) subDoc = xmlDoc(ch[[1]]) tagData <- xpathApply(subDoc, tag, xmlValue) free(subDoc) #print(tagData, indent=FALSE) #----convert string data to a numeric matrix--------------------------- #----split string---- tagData2 <- as.character(tagData) tagData3 <- strsplit(tagData2, "\n") tagMatrix <- as.matrix(as.data.frame(tagData3)) tagMatrix <- tagMatrix[2:nrow(tagMatrix)] Data <- strsplit(tagMatrix, " ") Matrix <- as.matrix(as.data.frame(Data)) #----to numeric matrix---- numericList <- as.numeric(Matrix[,1]) numericMatrix <- t(as.matrix(numericList)) for(n in 2:nrow(Matrix)){ numericList <- as.numeric(Matrix[,n]) numericMatrix <- rbind(numericMatrix, t(as.matrix(numericList))) } numericMatrix # numericTable <- as.table(numericMatrix) # numericTable \\ XML file (Beispiel.xml): pairwise_Fst 1 2 3 4 1 2 3 4 5 6 7 8 5 6 7 8 mismatch 9 8 7 6 5 4 3 2 \\ extracted data (with R): > numericMatrix [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 1 2 3 4 [3,] 5 6 7 8 [4,] 5 6 7 8