首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xml2js解析的问题

使用xml2js解析的问题
EN

Stack Overflow用户
提问于 2017-04-09 21:22:49
回答 2查看 4.2K关注 0票数 2

我有一个xml,其中标签名包含冒号(:),它看起来如下所示:

代码语言:javascript
复制
<samlp:Response>
data
</samlp:Response>

我使用下面的代码将这个xml解析为json,但是不能使用它,因为标记名包含冒号。

代码语言:javascript
复制
var xml2js = require('xml2js');
var parser = new xml2js.Parser();
var fs = require('fs');

    fs.readFile(
  filePath,
  function(err,data){
    if(!err){
      parser.parseString(data, function (err, result) {
        //Getting a linter warning/error at this point
        console.log(result.samlp:Response);
      });
    }else{
      callback('error while parsing assertion'+err);
    }
  }
);

};

错误:

代码语言:javascript
复制
events.js:161
      throw er; // Unhandled 'error' event
      ^

TypeError: Cannot read property 'Response' of undefined

如何在不更改XML内容的情况下成功解析此xml?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-09 21:36:36

xml2js允许您通过添加 array in your config options来明确设置XML名称空间删除。

代码语言:javascript
复制
const xml2js = require('xml2js')
const processors = xml2js.processors
const xmlParser = xml2js.Parser({
  tagNameProcessors: [processors.stripPrefix]
})
const fs = require('fs')

fs.readFile(filepath, 'utf8', (err, data) => {
  if (err) {
    //handle error
    console.log(err)
  } else {
    xmlParser.parseString(data, (err, result) => {
      if (err) {
        // handle error    
        console.log(err) 
      } else {
        console.log(result)
      }
    })  
  }
})
票数 5
EN

Stack Overflow用户

发布于 2020-05-04 22:06:21

我喜欢接受的答案,但请记住,您可以使用其密钥访问属性。

代码语言:javascript
复制
object['property']

所以在你的情况下

代码语言:javascript
复制
result['samlp:Response']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43312080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档