【问题标题】:Parsing XML using xml2js in Lambda Function在 Lambda 函数中使用 xml2js 解析 XML
【发布时间】:2018-10-31 04:40:46
【问题描述】:

我正在使用 Lambda 函数构建 Alexa 技能,该函数通过 Web 服务提供数据。 Web 服务返回 XML 数据,所以我使用的是 xml2js(支持)。

返回的 XML 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<DailySummary>
  <day dayOfWeek="Sunday" Date="04/22/2018" attribute1="test1" attribute2="test3" />
</DailySnapshot>

如何访问元素的属性?

在一个 index.js 文件中,我在下面添加了以下代码

'use strict';
exports.handler = (event, context, callback) => {
 var parseString = require('xml2js').parseString;
 var extractedData = "";
 var xml = '<?xml version="1.0" encoding="utf-8"?><DailySummary><day dayOfWeek="Sunday" Date="04/22/2018" attribute1="test1" attribute2="test3" />   </DailySnapshot>';
 parseString(xml, function (err, result) 
 {
   if(err) throw err;
   extractedData = result['DailySummary']['day'][0].$.type
 });        

callback(null,extractedData);    
};

我收到一个错误:

Function Logs:
START RequestId: b9c528f7-5cfc-11e8-a617-211b3668a43f Version: $LATEST
2018-05-21T13:41:56.667Z    b9c528f7-5cfc-11e8-a617-211b3668a43f    Error: Unexpected close tag
Line: 0
Column: 153

我是 node.js 的新手,请原谅我的无知,并提前感谢您的帮助。

【问题讨论】:

    标签: node.js aws-lambda alexa-skills-kit


    【解决方案1】:

    只需将回调调用放入parseString 回调中即可。

    'use strict';
    exports.handler = (event, context, callback) => {
     var parseString = require('xml2js').parseString;
     var extractedData = "";
     var xml = '<?xml version="1.0" encoding="utf-8"?><DailySummary><day dayOfWeek="Sunday" Date="04/22/2018" attribute1="test1" attribute2="test3" />   </DailySnapshot>';
     parseString(xml, (err, result) => {
       if(err) throw err;
       extractedData = result['DailySummary']['day'][0].$.type;
       callback(null,extractedData);
     });
    };
    

    您唯一可以保证结果数据存在的地方是回调,因此您想要对它执行的所有操作都必须在回调中完成。

    【讨论】:

    • 代码执行成功,但响应为空。结果['DailySummary']['day'][0].$.type 不应该返回星期日吗?
    • 无法使用最新版本的 xml2js 未找到
    猜你喜欢
    • 2019-03-15
    • 2014-08-30
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2019-10-24
    • 1970-01-01
    • 2014-10-21
    相关资源
    最近更新 更多