gpt4 book ai didi

xml - 将 XML 解析为 R 数据帧

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:16 28 4
gpt4 key购买 nike

我一直在尝试将一个大的 xml 文件解析为一个 R - data.frame 对象。 xml 具有以下架构:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?eclipse version="3.0"?>
<ROOT>
<row>
<field name="dtcreated"></field>
<field name="headline"></field>
<subheadline/>
<field name="body"></field>
</row>
<row>
<field name="dtcreated"></field>
<field name="headline"></field>
<subheadline/>
<field name="body"></field>
</row>
</ROOT>

plyr 便利函数没有帮助,因为无法验证 xml。所以我想出了以下代码,使用 xpath 查询:

adHocXml<-xmlTreeParse(adHocXmlPath,getDTD = FALSE)
adHocRoot<-xmlRoot(adHocXml)
creationDateColumn<-sapply(getNodeSet(adHocRoot,"//row//field[@name='dtcreated']"), xmlValue)
headlineColumn<-sapply(getNodeSet(adHocRoot,"//row//field[@name='headline']"), xmlValue)
bodyColumn<-sapply(getNodeSet(adHocRoot,"//row//field[@name='body']"), xmlValue)
adHocData<-data.frame(creationDate=creationDateColumn,headline=headlineColumn,body=bodyColumn)

该代码完全符合我对短文件的预期。然而,对于一个大文件和几千行标签,大约 10 分钟后我收到以下错误:

Error: 1: internal error: Huge input lookup
2: Extra content at the end of the document

谁能帮帮我?

最佳答案

libxml 对单个节点的大小有上限。您可以通过启用解析器标志 XML_PARSE_HUGE 来关闭此限制。在 RXML 中,您可以这样做:

library(XML)
xmlParse(myXML, options = HUGE)

您可能还想查看 xmlEventParse。 Martin Morgan 提供了一个很好的使用示例 here.

关于xml - 将 XML 解析为 R 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27452140/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com