栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Node.js Xml2js来自属性的结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node.js Xml2js来自属性的结果

使用的语法允许您浏览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/



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号