1. 개요

Node.js에서 XML을 parse하기 위한 xml2js는 https://github.com/Leonidas-from-XIV/node-xml2js 에서 확인할 수 있습니다. 

2. 설치

실제 설치는 아래와 같이 npm으로 하시면 되구요.

# ./npm install xml2js
xml2js@0.4.9 node_modules/xml2js
tqq sax@0.6.1
mqq xmlbuilder@2.6.4 (lodash@3.9.3)

일단 이러한 user.xml이라는 파일이 있다고 가정합니다.

<?xml version="1.0"?>
<list>
    <user>
        <name>kim</name>
        <country>korea</country>
    </user>
    <user>
        <name>lee</name>
        <country>paris</country>
    </user>
    <user>
        <name>park</name>
        <country>indonesia</country>
    </user>
    <user>
        <name>choi</name>
        <country>mexico</country>
    </user>
</list>

3. 테스트

이제 본격적으로 테스트를 시작하겠습니다. Node.js 소스 파일은 xmlParse.js입니다.

var xml2js = require('xml2js');
var parser = new xml2js.Parser();
var fs = require('fs');
 
var xml = fs.readFileSync(__dirname + '/user.xml', 'utf-8');
 
parser.parseString(xml, function(err, result) {
  console.log(result);
});

실행결과.

# ./node xmlParse.js
{ list: { user: [ [Object], [Object], [Object], [Object] ] } }

console.log에서 찍는 result를 JSON.stringify() 처리합니다.

실행결과.

# ./node xmlParse.js
{"list":{"user":[{"name":["kim"],"country":["korea"]},{"name":["lee"],"country":["paris"]},{"name":["park"],"country":["indonesia"]},{"name":["choi"],"country":["mexico"]}]}}

객체 수를 count하려면 length로 세면 됩니다. (result.list.user.length)

실행결과.

# ./node xmlParse.js
Total User: 4
{"list":{"user":[{"name":["kim"],"country":["korea"]},{"name":["lee"],"country":["paris"]},{"name":["park"],"country":["indonesia"]},{"name":["choi"],"country":["mexico"]}]}}

end.