2014-04-02 245 views
1

我正在使用MarkLogic 7 REST API在XML文档数据库之上构建一个AngularJS应用程序。我的文档采用NEWSML-G2格式。我配置了自定义查询选项,仅返回与搜索字符串匹配的每个文档的标题和创建日期。问题是这样的。MarkLogic REST API - JSON响应

我在我的XML中有一个标题元素。

<nitf version="-//IPTC//DTD NITF 3.6//EN" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:newzmeta="http://newz.nl/metadata/" xmlns="http://iptc.org/std/NITF/2006-10-18/"> 
<head> 
<title newz:origin="Generated" xmlns:newz="http://newz.nl/">Test Article</title> 
.... 
</nitf> 

在我的自定义查询选项中,我使用了下面一行。

<extract-metadata> 
    <qname elem-ns="http://iptc.org/std/NITF/2006-10-18/" elem-name="title"/> 
    .... 
</extract-metadata> 

现在的问题是,当我打的REST接口进行查询,并要求在JSON格式的结果,我得到的响应

"metadata":[{"{http://iptc.org/std/NITF/2006-10-18/}title":"Obama assumes the office of the President of the United States","metadata-type":"element"},{" {http://iptc.org/std/nar/2006-10-01/}firstCreated":"2009-01-20T05:00:09","metadata-type":"element"}] 

如何检索以下在UI端的标题值?我得到一个语法错误,如果我问

result.metadata.{http://iptc.org/std/NITF/2006-10-18/}title 

有没有办法专门访问此值,或以某种方式改变是一个从MarkLogic端返回的元素的名称?

回答

4

你可以这样做:

result.metadata.['{http://iptc.org/std/NITF/2006-10-18/}title'] 

支架符号用于他们的名字是不是有效的JavaScript标识,防止你使用点符号访问属性。

1

为了完整起见,另一种方法是编写和安装搜索响应的变换,以便在空名称空间中生成元数据元素或根据您的要求生成JSON表示。

但是,最简单的方法就是像戴夫所说的那样使用括号表示法。