加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML to JSON – 在JavaScript中处理xml名称空间和别名

发布时间:2020-12-16 07:49:17 所属栏目:百科 来源:网络整理
导读:我试图使用模块xml2js将node.js中的 XML转换为 JSON.访问变量时如何处理命名空间别名? 以下代码转换我的文件(sampleWithNamespaces.xml) var fs = require('fs'),xml2js = require('xml2js');var parser = new xml2js.Parser();fs.readFile('sampleWithName
我试图使用模块xml2js将node.js中的 XML转换为 JSON.访问变量时如何处理命名空间别名?

以下代码转换我的文件(sampleWithNamespaces.xml)

var fs = require('fs'),xml2js = require('xml2js');

var parser = new xml2js.Parser();
fs.readFile('sampleWithNamespaces.xml',function (err,data) {
    parser.parseString(data,result) {
        console.dir(result);
        console.log('Done');
    });
});

sampleWithNamespaces.xml:

<d:student xmlns:d='http://www.develop.com/student'>
  <d:id>3235329</d:id>
  <d:name>Jeff Smith</d:name>
  <d:language>JavaScript</d:language>
  <d:rating>9.5</d:rating>
</d:student>

输出:

$node xml2jsTest.js
{ '@': { 'xmlns:d': 'http://www.develop.com/student' },'d:id': '3235329','d:name': 'Jeff Smith','d:language': 'JavaScript','d:rating': '9.5' }
Done

如果我没有命名空间别名,我可以使用符号结果[‘d:name’]而不是result.name来访问’name’属性.我想我的问题是,我这样做是正确的吗?

我有read“如果一个元素有一个名称空间别名,别名和元素是使用”$“连接的.例如,ns:element变为ns $element”如果我这样做,我可以读取该属性作为结果.d $名称.如果我走这条路,我怎么会这样做?

我有一个类似的问题.我的大多数XML标签都在一个命名空间中.所以我决定从XML中删除所有命名空间.

通过向xml2js添加tagNameProcessors,可以在解析XML时去掉命名空间.

var parseString = require('xml2js').parseString;
var stripNS = require('xml2js').processors.stripPrefix;

parseString(xml_str,{ tagNameProcessors: [stripNS] },function(err,result) {});

这在技术上会忽略所有命名空间.如果您有来自多个名称空间的XML标记,那么这可能没什么用处.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读