将xml/html文档中的元素强制转换为data.frame
假设您有一个R格式的文档,格式如下:将xml/html文档中的元素强制转换为data.frame,r,xml,rvest,R,Xml,Rvest,假设您有一个R格式的文档,格式如下: <grp> <elementx> <sub_a>a</sub_a> <sub_b>b</sub_b> <sub_c>c</sub_c> </elementx> <elementx> <sub_a>1</sub_a> <sub_b>2</sub_b> <sub_c&
<grp>
<elementx>
<sub_a>a</sub_a>
<sub_b>b</sub_b>
<sub_c>c</sub_c>
</elementx>
<elementx>
<sub_a>1</sub_a>
<sub_b>2</sub_b>
<sub_c>3</sub_c>
</elementx>
</grp>
它不是一个html表,但由于所有元素都共享相同的简单内部格式,我们应该能够将它们视为一个表。对于已经处于这种简单结构中的xml,可以使用xml包中的
xmlToDataFrame()
轻松转换它,如下所示:
library(XML)
xmlstr <-
"<grp>
<elementx>
<sub_a>a</sub_a>
<sub_b>b</sub_b>
<sub_c>c</sub_c>
</elementx>
<elementx>
<sub_a>1</sub_a>
<sub_b>2</sub_b>
<sub_c>3</sub_c>
</elementx>
</grp>"
df <- xmlToDataFrame(xmlstr)
df
# sub_a sub_b sub_c
#1 a b c
#2 1 2 3
库(XML)
xmlstr对于已经处于这种简单结构中的xml,可以使用xml包中的xmlToDataFrame()
轻松转换它,如下所示:
library(XML)
xmlstr <-
"<grp>
<elementx>
<sub_a>a</sub_a>
<sub_b>b</sub_b>
<sub_c>c</sub_c>
</elementx>
<elementx>
<sub_a>1</sub_a>
<sub_b>2</sub_b>
<sub_c>3</sub_c>
</elementx>
</grp>"
df <- xmlToDataFrame(xmlstr)
df
# sub_a sub_b sub_c
#1 a b c
#2 1 2 3
库(XML)
xmlstr注意data.frame列的元素必须具有相同的类型。因此,列中的数字将转换为字符类型。我想这就是你想要的?您是否尝试过@dww提到的xmlToDataFrame()
,您的XML是一个简单的结构,可以使用XML包的xmlToDataFrame:df处理,谢谢。我遇到一个错误无法为签名“xml\u nodeset”的函数“xmlToDataFrame”找到继承的方法。知道我做错了什么吗?您正在合并包。rvest的read_html()
输出可能与对象在xmlToDataframe()
中使用的XML的xmlParse()
不一致。考虑只使用XML来满足这个简单的需要。注意DATA框架列的元素必须是相同类型的。因此,列中的数字将转换为字符类型。我想这就是你想要的?您是否尝试过@dww提到的xmlToDataFrame()
,您的XML是一个简单的结构,可以使用XML包的xmlToDataFrame:df处理,谢谢。我遇到一个错误无法为签名“xml\u nodeset”的函数“xmlToDataFrame”找到继承的方法。知道我做错了什么吗?您正在合并包。rvest的read_html()
输出可能与对象在xmlToDataframe()
中使用的XML的xmlParse()
不一致。考虑只使用XML来满足这种简单的需求。
xmlstr <- readLines("test.xml")
df <- xmlToDataFrame(xmlstr)
doc = readLines('https://www.gov.uk/government/announcements.atom?announcement_filter_option=statements&topics%5B%5D=transport')
df2 <- xmlToDataFrame(doc)