DOI (Digital Object Identifier) をmatlab 内からhttp://www.crossref.orgに送信して、bibtex データ (参考文献を作成するため) を取得したいと考えています。
crossref API は、次のようなことを提案しています。
curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
このソースに基づいています。
ここからの別の例では、次のことが示唆されていruby
ます。
open("http://dx.doi.org/10.1038/nrd842","Accept" => "text/bibliography; style=bibtex"){|f| f.each {|line| print line}}
ruby rocks を聞いたことがありますが、これを matlab で実行したいと考えており、ruby メッセージを翻訳する方法や crossref コマンドを解釈する方法がわかりません。
以下は、これまでのところ doi を crossref に送信し、bibtexretdat
ではなく xml ( variable ) でデータを取得するために持っているものです。
clear
clc
doi = '10.1038/nrd842';
URL_PATTERN = 'http://dx.doi.org/%s';
fetchurl = sprintf(URL_PATTERN,doi);
numinputs = 1;
www = java.net.URL(fetchurl);
is = www.openStream;
%Read stream of data
isr = java.io.InputStreamReader(is);
br = java.io.BufferedReader(isr);
%Parse return data
retdat = [];
next_line = toCharArray(br.readLine)'; %First line contains headings, determine length
%Loop through data
while ischar(next_line)
retdat = [retdat, 13, next_line];
tmp = br.readLine;
try
next_line = toCharArray(tmp)';
if strcmp(next_line,'M END')
next_line = [];
break
end
catch
break;
end
end
%Cleanup java objects
br.close;
isr.close;
is.close;
ruby ステートメントを、クロスリファレンスとの通信を確立するために投稿されたようなスクリプトを使用して matlab が送信できるものに変換するのに役立ちます。
編集:
追加の制約には、コードの下位互換性 (少なくとも R14 まで戻る) が含まれます:>(。また、問題は解決しますが「matlab」ソリューションではないため、ruby を使用しません。system('ruby script.rb')
.