我想通过从matlab中发送DOI(数字对象标识符)到http://www.crossref.org来检索bibtex数据(用于构建参考书目)。通过从matlab中发送DOI来从crossref中检索bibtex数据:从ruby中翻译
交叉引用API说明是这样的:根据this源
curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842
。
从here另一个例子表明,在ruby
如下:
open("http://dx.doi.org/10.1038/nrd842","Accept" => "text/bibliography; style=bibtex"){|f| f.each {|line| print line}}
虽然我听说的红宝石石头我想这样做在MATLAB和不知道如何翻译的红宝石消息或解释交叉引用命令。
以下是我迄今发送DOI给交叉引用和检索XML数据(可变retdat
),而不是中文提供,格式为:
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;
帮助翻译红宝石声明的东西MATLAB可以使用发布的脚本发送来建立与crossref的通信将不胜感激。
编辑:
附加约束条件包括代码(后面至少到R14)的向后兼容性:>(另外,没有用红宝石,由于解决了上述问题,但不是“MATLAB”。解决办法见here对于如何通过system('ruby script.rb')
调用从MATLAB的红宝石。
取代事情的来龙去脉为什么原始的Java,而不是['urlread'](http://www.mathworks.com/help/matlab/ref /urlread.html)? – horchler
这就是历史:代码是从另一个应用程序借来的。 –
用于设置请求标头和其他细节,[见本](http://undocumentedmatlab.com/blog/expanding-urlreads-capabilities/)。 – horchler