R中的PCDATA无效

时间:2014-10-16 15:50:53

标签: r xml-parsing last.fm invalid-characters

首先,如果这是一个重复的问题,我很抱歉。我已经尝试了几个小时,我看到了PHP或其他语言的不同解决方案,但不是R。

我正在使用他们的API从last.fm网站检索数据。 你需要一个API密钥来检索我想要获取的数据,但我会在这里更简单,希望你能回答我的问题。

这是我的问题: 在某些时候,当检索数据时,我遇到一个错误,它会停止我的请求。我跳了一次,但又一次又一次地回来了。我总是得到相同的:PCDATA无效的Char值#

以下是一个例子:

string = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<lfm status=\"ok\">\n<results for=\"a\" xmlns:opensearch=\"http://a9.com/-/spec/opensearch/1.1/\">\n<opensearch:Query role=\"request\" searchTerms=\"a\" startPage=\"1382\" />\n<opensearch:totalResults>212588</opensearch:totalResults>\n<opensearch:startIndex>1381</opensearch:startIndex>\n<opensearch:itemsPerPage>1</opensearch:itemsPerPage><artistmatches>\n<artist>\n    <name>!B0A \0348E09;&gt;2</name>\n                <listeners>1672</listeners>\n                <mbid></mbid>\n                        <url>http://www.last.fm/music/!B0A+%1C8E09;%3E2</url>\n    <streamable>0</streamable>\n            <image size=\"small\">http://userserve-ak.last.fm/serve/34/88015017.png</image>\n        <image size=\"medium\">http://userserve-ak.last.fm/serve/64/88015017.png</image>\n        <image size=\"large\">http://userserve-ak.last.fm/serve/126/88015017.png</image>\n        <image size=\"extralarge\">http://userserve-ak.last.fm/serve/252/88015017.png</image>\n        <image size=\"mega\">http://userserve-ak.last.fm/serve/_/88015017/B0A+8E092+15286997.png</image>\n    </artist></artistmatches>\n</results></lfm>\n"

当我尝试解析此文本时,我收到错误:

doc = xmlParse(string, asText = TRUE)
PCDATA invalid Char value 28
Error: 1: PCDATA invalid Char value 28

我认为实现这一目标的部分来自字符串的这一部分:

<name>!B0A \0348E09;&gt;2</name>\n 

但我现在无法确定。

我正在寻找的是这些解决方案之一,是第一个理想情况,但其他任何一个都会让我开心:

1 - 允许R接收这些无效字符

2 - 消除无效字符并继续解析而不停止。

3 - 使用无效字符跳过字符串并继续解析

4 - 创建一个函数来查找无效字符,以便在从last.fm中检索数据时包含该字符

我希望你能理解这个问题并帮助我。 提前致谢

0 个答案:

没有答案