我尝试使用R和XML包加载一些公开的NHS数据,但我不断收到以下错误消息:
错误:无法加载外部实体" http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"
尽管看了几个相关的问题,我似乎无法弄清楚可能导致这种情况的原因。
这是我非常简单的代码:
library("XML")
url <- "http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"
doc <- htmlParse(url)
编辑:会话信息
R version 3.0.1(2013-05-16)平台:i386-w64-mingw32 / i386(32位)
locale:[1] LC_COLLATE = English_United Kingdom.1252 LC_CTYPE = English_United Kingdom.1252 [3] LC_MONETARY = English_United Kingdom.1252 LC_NUMERIC = C [5] LC_TIME = English_United Kingdom.1252
附加基础包:[1] stats graphics grDevices utils
数据集方法基础通过命名空间加载(而不是附加):[1] tools_3.0.1
答案 0 :(得分:9)
包XML存在一些问题。问题是间歇性的,与URL无关。我使用httr包的函数GET解决了这个问题,以获取html代码,然后将其传递给htmlParse,见下文:
library("XML")
library(httr)
url <- "http://www.england.nhs.uk/statistics/statistical-work-areas/bed-availability-and-occupancy/"
doc <- htmlParse(rawToChar(GET(url)$content))
答案 1 :(得分:3)
您还可以使用public static <T> T copyAttributesFromTo(T value, T dataHolder) throws IllegalArgumentException, IllegalAccessException {
if (value == null || dataHolder == null) {
throw new IllegalArgumentException();
}
final Field[] fields = value.getClass().getDeclaredFields();
for (Field field : fields) {
if (!Modifier.isFinal(field.getModifiers())) {
field.setAccessible(true);
field.set(value, field.get(dataHolder));
}
}
return value;
}
&amp; rvest
个包裹:
xml2