如何使用SyndicationFeed从DSPACE检索数据

如何使用SyndicationFeed从DSPACE检索数据,dspace,Dspace,背景: 我们目前有一个可以从EPRINTS存储库检索数据的现有应用程序,但其中一个新客户端正在使用DSPACE存储库 据我所知,浏览时EPRINTs的查询URL提供了一种XML类型,例如: 大学eprints域?\u action\u export=1&output=RSS2&exp=0%7c1%7c日期%2F创建者名称%2ftitle%7Crchive%7c-%7cq%3a\u全文\u%2F摘要%2F创建者名称%2fdate%2F文档%2feditors\u名称%2ftitle%3ALL%3a

背景:

我们目前有一个可以从EPRINTS存储库检索数据的现有应用程序,但其中一个新客户端正在使用DSPACE存储库

据我所知,浏览时EPRINTs的查询URL提供了一种XML类型,例如:

大学eprints域?\u action\u export=1&output=RSS2&exp=0%7c1%7c日期%2F创建者名称%2ftitle%7Crchive%7c-%7cq%3a\u全文\u%2F摘要%2F创建者名称%2fdate%2F文档%2feditors\u名称%2ftitle%3ALL%3aIN%3MUSIC%7c-%7ceprint状态%3AERUT状态%3ANY%3ANY%3aEQ%3aEQ存档%7CMETATA可见性%3ANY%3aEQ元数据可见性%3ANY%3aEQ显示

现在,我想从DSPACE存储库中检索数据。如何创建查询URL? 这是我正在使用的现有代码:

            var client = new HttpClient();
            var stream = await client.GetStreamAsync(url);
            var XmlReaderSettings_ = new XmlReaderSettings();
            XmlReaderSettings_.XmlResolver = null;
            XmlReaderSettings_.DtdProcessing = DtdProcessing.Parse;

            using (var xr = XmlReader.Create(stream, XmlReaderSettings_))
            {
                var feed = SyndicationFeed.Load(xr);
                return feed.Items.ToList();
            }

如果您在DSpace站点上查看页面源代码,RSS和opensearch URL应该在源代码中可用

<link type="application/rss+xml" rel="alternate" href="/feed/rss_1.0/site" />
<link type="application/rss+xml" rel="alternate" href="/feed/rss_2.0/site" />
<link type="application/atom+xml" rel="alternate" href="/feed/atom_1.0/site" />
<link type="application/opensearchdescription+xml" rel="search" href="https://siteid:443/open-search/description.xml" title="DSpace" />


如果你能举例说明你想检索的每个项目的信息,可能会帮助你得到好的答案。我找到了这个问题的解决方案。DSPACE获取RSS提要格式的查询URL是应该启用“开放搜索”。URl查询示例如下: