Duncan Temple Lang의 XML 패키지를 사용하여 R에서 XML을 구문 분석하려고합니다. 내가 가지고있는 코드는 다음과 같습니다 :recursive 함수 내에서 data.frame에 새 행 추가 R
library(XML)
retrieveStructureInfo <- function(node, tableData) {
tableD <- data.frame(path = NA, node = NA, value = NA)
for (i in 1 : xmlSize(xmlAttrs(node))) {
tableD <- rbind(tableD, c("path", "node", "value"))
tableData <<- rbind(tableData, tableD)
}
#children is the no. of nodes within a node
for (i in 1 : children) {
#recursive function call
retrieveStructureInfo(node[[i]], tableD)
}
}
#parse xml document
#xmlfile is the file path
doc <- xmlParse(xmlfile)
r <- xmlRoot(doc)
tableData <- data.frame(path = NA, node = NA, value = NA)
retrieveStructureInfo(r, tableData)
tableData
재귀 함수에서 행해지므로 data.frame에 행을 추가하는 데 문제가 있습니다. 아래 주어진 XML의 경우 마지막 두 속성 값만 data.frame에 추가됩니다. 즉 Source = "b"및 Available = "true"입니다. tableData라는 주 테이블을 만들고 tableD라는 함수 내에서 로컬 테이블로 업데이트하려고 시도하지만 작동하지 않습니다.
<CATALOG>
<PLANT>
<COMMON Source="a" Available="false">Bloodroot</COMMON>
</PLANT>
<PLANT>
<COMMON Source="b" Available="true">Columbine</COMMON>
</PLANT>
</CATALOG>
나는 내가 어떤 XML (I 재귀의 아이디어와 함께 갔다 이유이다)를 읽는 기능을 작성하는 것을 목표로하고 있음을 추가하는 것을 잊었다 및 출력 제공 : 일반적으로 답을
path node value parent type
CATALOG/PLANT/COMMON Source a PLANT attribute
CATALOG/PLANT/COMMON Available false PLANT attribute
CATALOG/PLANT/COMMON COMMON Bloodroot PLANT text
답변 해 주셔서 감사합니다. 내 이해에서 XPath는 경로를 지정해야합니다. 하지만 XML 스크립트가 무엇이든 관계없이 XML을 구문 분석해야하는 함수를 작성 중입니다. 그것은 XML을 구문 분석하고 내 질문에 출력을 생산해야합니다. – user2877232