Код вопроса не будет компилироваться из-за ошибок. Даже если эти ошибки были исправлены, код не делает ничего полезного - xmlToList
применяется к URL , а не к результатам запроса GET. Этого достаточно, чтобы сгенерировать ошибку:
query<-"http://export.arxiv.org/api/query?search_query=(au:( \"Benoit Bertrand\"))&start=0&max_results=2000"
xmlToList(query)
Никакое количество кодировки URL и конверсий не исправит это. Преобразование также не требуется, поскольку URL-адрес попадает в диапазон US-ASCII. В этом диапазоне строка UTF8 неотличима от строки ASCII.
Правильный код для получения и анализа этой страницы Arxiv:
//Just a URL
query<-"http://export.arxiv.org/api/query?search_query=(au:( \"Benoit Bertrand\"))&start=0&max_results=2000"
//Get the contents
r <- GET(query)
//Extract the text from the response
xml<-content(r, "text")
//Read as lists
l<-xmlToList(xml)
Ответ r
это не просто строка, это объект, который содержит заголовки (включая кодировку), статус ответа и содержание ответа. Одним из заголовков является Content-Type:
> r
Response [http://export.arxiv.org/api/query?search_query=(au:( "Benoit Bertrand"))&start=0&max_results=2000]
Date: 2019-09-30 12:54
Status: 200
Content-Type: application/atom+xml; charset=UTF-8
Size: 786 B
content(r, "text")
преобразует содержимое в текст с использованием кодировки, хранящейся в этом заголовке.
После этого xmlToList
может анализироватьXML строка