使用的语法允许您浏览JSON对象的节点。但是似乎您正在尝试搜索将其视为XPath谓词。它不会工作。
使用xml2js可以
time使用以下代码在代码中获取对象数组:
result.root.time
然后,循环比较该
$.c值,这就是达到属性的方式。例如,第二时间元素的属性为:
result.root.time[1].$.c
这就是您需要比较字段的数据。当发现
time数组位于哪个元素中时,您将得到
title(实际上是一个包含标题的单元素数组),如下所示:
var resultArr = [];for(var i = 0; i < result.root.time.length; i++) { if (result.root.time[i].$.c == timetag) { resultArr = result.root.time[i].title; break; } }然后可以将其发送到套接字:
io.sockets.emit('subs', { subs: resultArr[0] });使用JSONPath的解决方案
如果您不想在Javascript中实现循环以比较属性值,则可以使用JSONPath。它的语法不如XPath好,但可以。您将必须通过NPM获得它,并要求:
var jsonpath = require('JSONPath');然后,您可以
title使用以下表达式获取所需的内容:
var expression = "$.root.time[?(@.$.c == '00:00:01')].title[0]";
[..]是一个谓词,
?是要运行带有表达式的脚本,
@.是访问属性(在xml2js对象中表示为
$.c。您当然可以用
timetag变量替换字符串。
要运行搜索,请使用:
var resultArr = jsonpath.eval(result, expression);
它将返回一个包含所需文本的数组。然后,您可以将其发送到任何地方:
io.sockets.emit('subs', { subs: resultArr[0] });您可以在此处阅读有关JSONPath的更多信息:http
://goessner.net/articles/JsonPath/



