2017-05-16 2 views
0

NodejsでXMLをJSONに解析しようとしていますが、非常に奇妙なJSONデータが戻ってきています。xml2jsの奇妙な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>[email protected]</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です:誰も私が唯一の「idnumbers」を取得するためにループを設定助けることができる

{ 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: [ '[email protected]' ] }, 
          { '$': { 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' } } ] }, 

? これは間違っているので、jsonをクリーンアップする方法...

ありがとうございます!

EDIT

XMLは、Moodleのから来たが、私の代わりにXMLのJSONデータを取得する方法を発見しました。したがって、解析はもう必要ありません!

+0

を試すことができますか? –

+0

あなたはそれが何を意味するのか分かりません?もう少し説明できますか?返信いただきありがとうございます!!! –

答えて

0

あなたはなぜ、XMLを解析し、必要な値を取得するためにDOMメソッドを使用していないこの

const transform = require('camaro') 

const xml = `your xml goes here` 

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

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

返事をありがとう!しかし、私はこのデータをMoodleから入手しました。明らかにXMLの代わりにjsonデータを取得する方法があります。だから私はもうXMLを解析する必要はありませんが、ありがとう! –