gpt4 book ai didi

ruby - 通过从 matlab : translation from ruby 发送 DOI 从 crossref 检索 bibtex 数据

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:47 27 4
gpt4 key购买 nike

我想通过将 DOI(数字对象标识符)发送到 http://www.crossref.org 来检索 bibtex 数据(用于构建引用书目)从 matlab 中。

crossref API 建议是这样的:

curl -LH "Accept: text/bibliography; style=bibtex" http://dx.doi.org/10.1038/nrd842

基于 this来源。

来自 here 的另一个示例在 ruby 中建议以下内容:

open("http://dx.doi.org/10.1038/nrd842","Accept" => "text/bibliography; style=bibtex"){|f| f.each {|line| print line}}

虽然我听说过 ruby​​ 摇滚,但我想在 matlab 中执行此操作,但不知道如何翻译 ruby​​ 消息或解释 crossref 命令。

以下是我到目前为止发送 doi 到 crossref 并检索 xml 中的数据(在变量 retdat 中),但不是 bibtex,格式:

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 可以使用脚本发送的内容,例如为与 crossref 建立通信而发布的脚本,我们将不胜感激。

编辑:

其他约束包括代码的向后兼容性(至少返回到 R14):>(。另外,不使用 ruby​​,因为它解决了问题但不是“matlab”解决方案,请参阅 here 了解如何通过 system('ruby script.rb') 从 matlab 调用 ruby​​。

最佳答案

您可以根据需要轻松编辑 urlread。由于版权原因,我不会发布修改后的 urlread 函数代码。

在 urlread 中,(我的在 C:\Program Files\MATLAB\R2012a\toolbox\matlab\iofun\urlread.m),作为最不优雅的解决方案:

就在“% 从连接中读取数据”之前。我补充说:

urlConnection.setRequestProperty('Accept','text/bibliography; style=bibtex');

关于ruby - 通过从 matlab : translation from ruby 发送 DOI 从 crossref 检索 bibtex 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17932726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com