【发布时间】:2016-01-06 07:45:12
【问题描述】:
我编写了以下代码来解析一个简单的 XML 文件。
xmlfile <- xmlTreeParse(inFile$datapath,encoding = "UTF-8")
xmltop = xmlRoot(xmlfile)
singlexml <- xmlSApply(xmltop, function(x) xmlSApply(x, xmlValue))
singlexml_df <- as.data.frame(t(singlexml),row.names=NULL)
indx <- sapply(singlexml_df, is.list)
singlexml_df[indx] <- lapply(singlexml_df[indx], function(x) as.character(x))
singlexml_df
XML:
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG>
<PLANT>
<COMMON>Bloodroot</COMMON>
<BOTANICAL>Sanguinaria canadensis</BOTANICAL>
<ZONE>4</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$2.44</PRICE>
<AVAILABILITY>031599</AVAILABILITY>
</PLANT>
<PLANT>
<COMMON>Columbine</COMMON>
<BOTANICAL>Aquilegia canadensis</BOTANICAL>
<ZONE>3</ZONE>
<LIGHT>Mostly Shady</LIGHT>
<PRICE>$9.37</PRICE>
<AVAILABILITY>030699</AVAILABILITY>
</PLANT>
</CATALOG>
它被成功解析并转换为数据帧。
但我的新要求是解析嵌套的 XML。
当我尝试解析新的嵌套 XML 时,所有内容都组合在一个列中,并且没有正确地转换为数据框。
我想要 请提供您的建议。
谢谢
【问题讨论】:
-
您是否看到错误消息?您的第二个 xml 示例不是有效的 xml。它包含两个根节点,ALERT 和 CATALOG,xml 只允许一个根节点。此外,ALERT 标记未关闭,这是 xml 要求的。
-
感谢@Matthew 发现错误。以前的 XML 是经过修改的。我现在已经更新了我想要解析的确切 XML。你能帮帮我吗?