【问题标题】:Weird json data from xml2js来自 xml2js 的奇怪 json 数据
【发布时间】:2017-05-16 16:33:41
【问题描述】:

我正在尝试在 Nodejs 中将 XML 解析为 JSON,但我得到了一些非常奇怪的 JSON 数据。

这是 XML 数据:

<?xml version="1.0" encoding="UTF-8" ?>
<RESPONSE>
<SINGLE>
<KEY name="users"><MULTIPLE>
<SINGLE>
<KEY name="id"><VALUE>1</VALUE>
</KEY>
<KEY name="username"><VALUE>guest</VALUE>
</KEY>
<KEY name="firstname"><VALUE>Guest user</VALUE>
</KEY>
<KEY name="lastname"><VALUE> </VALUE>
</KEY>
<KEY name="fullname"><VALUE>Guest user  </VALUE>
</KEY>
<KEY name="email"><VALUE>root@localhost</VALUE>
</KEY>
<KEY name="address"><VALUE null="null"/>
</KEY>
<KEY name="phone1"><VALUE null="null"/>
</KEY>
<KEY name="phone2"><VALUE null="null"/>
</KEY>
<KEY name="icq"><VALUE null="null"/>
</KEY>
<KEY name="skype"><VALUE null="null"/>
</KEY>
<KEY name="yahoo"><VALUE null="null"/>
</KEY>
<KEY name="aim"><VALUE null="null"/>
</KEY>
<KEY name="msn"><VALUE null="null"/>
</KEY>
<KEY name="department"><VALUE></VALUE>
</KEY>
<KEY name="institution"><VALUE null="null"/>
</KEY>
<KEY name="idnumber"><VALUE null="null"/>
</KEY>

最后一个值“idnumber”是我必须从所有用户那里检索的值。

这是生成的json:

{ RESPONSE:
   { SINGLE:
      [ { KEY:
           [ { '$': { name: 'users' },
               MULTIPLE:
                [ { SINGLE:
                     [ { KEY:
                          [ { '$': { name: 'id' }, VALUE: [ '1' ] },
                            { '$': { name: 'username' }, VALUE: [ 'guest' ] },
                            { '$': { name: 'firstname' }, VALUE: [ 'Guest user' ] },
                            { '$': { name: 'lastname' }, VALUE: [ ' ' ] },
                            { '$': { name: 'fullname' }, VALUE: [ 'Guest user  ' ] },
                            { '$': { name: 'email' }, VALUE: [ 'root@localhost' ] },
                            { '$': { name: 'address' },
                              VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'phone1' },
                              VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'phone2' },
                              VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'icq' }, VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'skype' }, VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'yahoo' }, VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'aim' }, VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'msn' }, VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'department' }, VALUE: [ '' ] },
                            { '$': { name: 'institution' },
                              VALUE: [ { '$': { null: 'null' } } ] },
                            { '$': { name: 'idnumber' },
                              VALUE: [ { '$': { null: 'null' } } ] },

谁能帮我设置一个循环来只检索“idnumbers”? 或者一种清理 json 的方法,因为这看起来有点不对...

提前致谢!!

编辑

XML 来自 Moodle,但我找到了一种检索 json 数据而不是 XML 的方法。所以不再需要解析了!

【问题讨论】:

  • 为什么不直接解析 XML 并使用 DOM 方法来获取所需的值?
  • 因为我不确定你的意思是什么?你能再解释一下吗?谢谢回复!!!

标签: javascript json node.js xml xml2js


【解决方案1】:

你可以试试这个

const transform = require('camaro')

const xml = `your xml goes here`

const result = transform(xml, {
    id: '//KEY[@idnumber]'
})

console.log(JSON.stringify(result, null, 2))

【讨论】:

  • 感谢您的回复!但我从 Moodle 获得了这些数据,显然有一种方法可以检索 json 数据而不是 XML。所以我不再需要解析 XML,但是谢谢!!
猜你喜欢
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 2014-11-09
相关资源
最近更新 更多