2017-08-29 36 views
0

我在nodeJs中使用xml2json库。我有XML:xml2json从数组中返回1个对象

<SchedulingModel > 
    <Jobs> 
    <Job Id="1"> 
     <Operations> 
     </Operations> 
    </Job> 
    <Job Id="2"> 
     <Operations> 
     </Operations> 
    </Job> 
    <Job Id="3"> 
     <Operations> 
     </Operations> 
    </Job> 
    <Job Id="4"> 
     <Operations> 
     </Operations> 
    </Job> 
<Job Id="5"> 
     <Operations> 
     </Operations> 
    </Job> 
    </Jobs> 
</SchedulingModel> 

我试图解析这个XML:

const parser = new xml2js.Parser(); 
parser.parseString(plannerXML , (err, result) => { 
     console.log(result["SchedulingModel"]["Jobs"]); 
}); 

结果解析后,我只有一个对象乔布斯阵列

console.log(result); 

{ SchedulingModel: 
    Jobs: [ [Object] ] 
} 

谁可以说出了什么问题? 我需要这个XML的所有对象。

回答

1

首先我注意到你没有使用xml2json包,你使用的包是xml2js。我试过你的构建和xml2js不像你想象的那样工作,它创建了一个名为“Job”的单个对象作为一个作业数组。对于一个更直观的测试,只需像这样放置一个字符串:

parser.parseString(plannerXML , (err, result) => { 
     console.log(JSON.stringify(result["SchedulingModel"]["Jobs"])); 
}); 

我希望它有帮助。

+0

是的,你说得对,我用xml2js,只是我尝试了很多图书馆今天忘了删除它的例子。我喜欢像结果一样使用它的方式[“SchedulingModel”] [“Jobs”] [0] [“Job”]。就这样,我收到了一系列的工作。但任何方式非常感谢你! –

2

我通常使用camaro从xml转换到json,并轻松更改所需的结果。

你可以用下面的示例(添加一些文字例如操作)尝试:

const xml = '<SchedulingModel><Jobs><Job Id="1"><Operations>a</Operations></Job><Job Id="2"><Operations>b</Operations></Job><Job Id="3"><Operations>c</Operations></Job><Job Id="4"><Operations>d</Operations></Job><Job Id="5"><Operations>e</Operations></Job></Jobs></SchedulingModel>' 

const temp = { 
    SchedulingModel: ['/SchedulingModel/Jobs/Job', { 
     Id: '@Id', 
     Operations: 'Operations' 
    }] 
} 

const transform = require('camaro') 
const results = transform(xml, temp) 

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

响应:

{ 
    "SchedulingModel": [ 
     { 
      "Id": "1", 
      "Operations": "a" 
     }, 
     { 
      "Id": "2", 
      "Operations": "b" 
     }, 
     { 
      "Id": "3", 
      "Operations": "c" 
     }, 
     { 
      "Id": "4", 
      "Operations": "d" 
     }, 
     { 
      "Id": "5", 
      "Operations": "e" 
     } 
    ] 
} 
+0

非常感谢!我会在未来尝试! –