3

初めまして、度重なる質問で申し訳ありません。私はすでに数時間試しましたが、PHPまたは他の言語では異なる解決策が見られますが、Rでは解決されません.

API を使用して、last.fm Web サイトからデータを取得しています。取得しようとしているデータを取得するには 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 つです。最初の理想的な状況ですが、他のソリューションのいずれかが私を幸せにします。

1 - R がこれらの無効な文字を受け取ることを許可する

2 - 無効な文字を削除し、解析を停止せずに続行します。

3 - 無効な文字を含む文字列をスキップし、解析を続行します

4 - 無効な文字を検索する関数を作成して、last.fm からデータを取得するときにそれを含めることができるようにします。

質問を理解し、私を助けてくれることを願っています。前もって感謝します

4

1 に答える 1