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

我试图使用模块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标记,那么这可能没什么用处.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇