Вот два варианта
Загрузка CSV
Я нашел другое многообещающее решение, которое не так хорошо работает на практике, как в
CrossRef позволяет загружать связанный CSV напрямую, а затем выполняет текстовый запрос здесь: http://www.crossref.org/stqUpload/
Однако только 18 из 250 запросов (~ 7%) вернули doi.
XML-запрос
Основываясь на ответе Брайана Диггса, здесь сделана попытка, которая выполняет 95% работы - к написанию XML-запроса у него все еще есть несколько ошибок, которые требуют некоторого удаления с использованием sed
. Но самая большая проблема в том, что мой "сеанс истек", когда запрос был отправлен.
синтаксис xml включает возможность использовать нечеткое сопоставление.
doiquery.xml содержит текст шаблона в ответе @Brians; ссылка на citations.csv приведена выше.
library(XML)
doiquery.xml <- xmlTreeParse('doiquery.xml')
query <- doiquery.xml$doc$children$query_batch[["body"]]
citations <- read.csv("citations.csv")
new.query <- function(citation, query = query){
xmlValue(query[["author"]]) <- as.character(citation$author)
xmlValue(query[["year"]]) <- as.character(citation$year)
xmlValue(query[["article_title"]][["text"]]) <- citation$title
xmlValue(query[["journal_title"]]) <- citation$journal
return(query)
}
for (i in 1:nrow(citations)){
q <- addChildren(q, add.query(citations[i,]))
}
axml <- addChildren(doiquery.xml$doc$children$query_batch, q )
saveXML(axml, file = 'foo.xml')
Конвертер CSV в XML
Программное обеспечение Creativyst предоставляет конвертер CSV в XML с веб-интерфейсом.
шаги:
- Введите названия столбцов в поле ElementID,
- «документ» в поле DocID
- «запрос» в поле RowID
- Копирование / вставка CSV в «Входной файл CSV».
- Нажмите Преобразовать
Также см. Этот связанный вопрос: Сценарий оболочки для анализа CSV-запроса в XML?