首先,如果这是一个重复的问题,我很抱歉。我已经尝试了几个小时,我看到了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;>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;>2</name>\n
但我现在无法确定。
我正在寻找的是这些解决方案之一,是第一个理想情况,但其他任何一个都会让我开心:
1 - 允许R接收这些无效字符
2 - 消除无效字符并继续解析而不停止。
3 - 使用无效字符跳过字符串并继续解析
4 - 创建一个函数来查找无效字符,以便在从last.fm中检索数据时包含该字符
我希望你能理解这个问题并帮助我。 提前致谢