R';s XML包在正确的XML文档上抛出错误
我应该使用XML包使用R软件解析许多XML文档(Duncan Temple Lang,2013)。以下是一个例子: 如果链接被复制粘贴到浏览器的地址栏中,则会显示一个XML页面,并已使用众多在线验证器之一检查其正确性。已选择,并且XML文档的标记似乎有效 但是,使用此代码:R';s XML包在正确的XML文档上抛出错误,xml,r,cran,Xml,R,Cran,我应该使用XML包使用R软件解析许多XML文档(Duncan Temple Lang,2013)。以下是一个例子: 如果链接被复制粘贴到浏览器的地址栏中,则会显示一个XML页面,并已使用众多在线验证器之一检查其正确性。已选择,并且XML文档的标记似乎有效 但是,使用此代码: library(XML) url = "http://musicbrainz.org/ws/2/release?query=%22A%20Is%20for%20Alpine%22%20AND%20artist:%22Alpi
library(XML)
url = "http://musicbrainz.org/ws/2/release?query=%22A%20Is%20for%20Alpine%22%20AND%20artist:%22Alpine%22"
data = xmlTreeParse(url, asTree = TRUE)
报告了以下错误:
Blank needed here
Error: 1: Blank needed here
现在,这个错误与这里讨论的类似,但是看不出这个错误是如何应用于我要解析的XML文档的
软件:
R版本3.0.2(2013-09-25)-“飞盘航行”
平台:x86_64-unknown-linux-gnu(64位)
XML包版本3.98-1.1首先使用RCurl下载文件,然后您应该没有问题:
library(RCurl)
u <- getURL(url)
> xmlTreeParse(u, asTree=TRUE)
$doc
$file
[1] "<buffer>"
$version
[1] "1.0"
$children
$children$metadata
<metadata created="2013-12-17T04:49:41.807Z" xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0">
<release-list count="1" offset="0">
<release id="d1e75e7b-fe4a-4cd6-b0d9-8ccf04a62406" score="100">
<title>A Is for Alpine by Alpine</title>
<status>Official</status>
<text-representation>
<language>eng</language>
<script>Latn</script>
</text-representation>
<artist-credit>
<name-credit>
<artist id="d7f0c2fe-00fb-4248-995a-dbfd5a87331a">
<name>Alpine</name>
<sort-name>Alpine</sort-name>
</artist>
</name-credit>
</artist-credit>
<release-group id="7ea67d40-8819-4059-a9be-e1115cdf0ddb" type="Album">
<primary-type>Album</primary-type>
</release-group>
<date>2012-08-10</date>
<country>AU</country>
<release-event-list>
<release-event>
<date>2012-08-10</date>
<area id="106e0bec-b638-3b37-b731-f53d507dc00e">
<name>Australia</name>
<sort-name>Australia</sort-name>
<iso-3166-1-code-list>
<iso-3166-1-code>AU</iso-3166-1-code>
</iso-3166-1-code-list>
</area>
</release-event>
</release-event-list>
<label-info-list>
<label-info>
<catalog-number>IVY166</catalog-number>
<label id="96e57a7b-c481-41e5-a0d4-111604210207">
<name>Ivy League Records</name>
</label>
</label-info>
</label-info-list>
<medium-list count="1">
<track-count>12</track-count>
<medium>
<format>CD</format>
<disc-list count="1"/>
<track-list count="12"/>
</medium>
</medium-list>
</release>
</release-list>
</metadata>
attr(,"class")
[1] "XMLDocumentContent"
$dtd
$external
NULL
$internal
NULL
attr(,"class")
[1] "DTDList"
attr(,"class")
[1] "XMLDocument" "XMLAbstractDocument"
库(RCurl)
u xmlTreeParse(u,asTree=TRUE)
$doc
$file
[1] ""
$version
[1] "1.0"
$children
$children$元数据
A代表阿尔卑斯山
官方的
英格
拉丁语
阿尔卑斯山
阿尔卑斯山
专辑
2012-08-10
金
2012-08-10
澳大利亚
澳大利亚
金
IVY166
常春藤联盟记录
12
光盘
属性(,“类”)
[1] “XMLDocumentContent”
$dtd
$external
无效的
$internal
无效的
属性(,“类”)
[1] “DTDList”
属性(,“类”)
[1] XMLDocument“XMLAbstractDocument”
现在它就像一个符咒。我错过了使用RCurl的要点。使用XML总是需要RCurl吗?无论如何,我会投票给你的答案,但我仍然没有足够的声誉。我不知道你为什么会在这种情况下出错,但我认为使用RCurl下载总是更方便,因为它允许你更容易地将HTTP问题与XML解析问题分开。一定是这样。RCurl+XML是我问题的解决方案。