티스토리 뷰
프로그래밍 언어/Node.js
[Node.js] cheerio 모듈을 이용한 xml 파싱: self-closing tag의 text 받아오기
miiingo 2019. 4. 22. 14:41반응형
cheerio 모듈을 이용해서 xml 파일의 내용을 파싱할 때, selector의 content가 없는 경우 text를 제대로 받아오지 못하는 문제가 발생한다.
<SELECTOR></SELECTOR>
위와 같은 형식으로 xml이 출력되면 상관없지만
<SELECTOR/>
위와 같은 형식으로 selector가 self-closing 되어버리면 text를 제대로 받아오지 못한다.
이럴 경우를 해결하기 위해, cheerio.load 시에 xmlMode를 true로 설정해주면 된다.
다음과 같은 xml 형식의 파일이 있다고 가정하자.
<C005>
<total_count>100014</total_count>
<RESULT>
<CODE>INFO-000</CODE>
<MSG>정상처리되었습니다.</MSG>
</RESULT>
<row id="0">
<NAME>홍길동</NAME>
<AGE>28</AGE>
<ETC>동에 번쩍 서해 번쩍</ETC>
</row>
<row id="1">
<NAME>김철수</NAME>
<AGE>31</AGE>
<ETC/>
</row>
해당 내용을 제대로 가져오기 위해서는 다음과 같이 설정해주면 된다.
//var $ = cheerio.load(html); // 원래 소스
var $ = cheerio.load(html, {xmlMode: true}); // xmlMode 설정
$('row').each(function () {
row_id = $(this).attr('id'); // row id
NAME = $(this).children('NAME').text(); //이름
AGE = $(this).children('AGE').text(); //나이
ETC = $(this).children('ETC').text(); //기타
console.debug('row_id : ' + row_id);
console.debug('NAME : ' + NAME);
console.debug('AGE : ' + AGE);
console.debug('ETC : ' + ETC);
});
xmlMode를 true로 설정해주지 않으면 'row id=1'인 '김철수'의 'ETC' 필드 값이 제대로 출력되지 않는다.
반응형
'프로그래밍 언어 > Node.js' 카테고리의 다른 글
[Node.js] Javascript: 지정한 길이에 맞게 배열을 선언하고 값을 초기화하는 방법들 (1) | 2020.04.02 |
---|---|
[Node.js] Javascript: 절대값 구하기 (Math.abs) (0) | 2020.04.02 |
[Node.js] javascript: 실수를 올림, 내림, 반올림하여 정수로 만드는 Math 함수들 (0) | 2020.03.18 |
[Node.js] Javascript의 자료형 비교, 확인, 변환 (0) | 2020.03.17 |
[Node.js] node-cron을 이용한 NodeJS 스케줄러 설정 (1) | 2018.11.08 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Blockchain
- 알고리즘
- 직딩잇템
- 하이퍼레저 페브릭
- 어서와 데이터는 처음이지
- 블록 체인
- Hyperledger Indy
- javascript
- 암브로셔스
- Hyperledger Fabric v1.2
- 빅데이터
- 문제풀이
- Private Data
- 하이퍼레저 패브릭
- 기초 of 기초 데이터 개념
- 빅데이터 강의
- 블록체인
- 코테
- Hyperledger Fabric v1.1
- Hyperledger Fabric
- ambrosus
- 빅데이터 교육
- DOCs
- ubuntu
- 빅데이터 기초
- 코딩테스트
- codility
- docker
- 하이퍼레저 인디
- 코딜리티
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함