...
XML 콘솔 출력
자바스크립트의 JSON 객체 같은 경우 JSON.stringify(data,null,2) 메소드의 매개변수를 할당 해주면 알아서 자동으로 이쁘게 파싱되어 콘솔에 출력하였다.
하지만 XML 객체의 메소드는 일자로 된 xml 형태의 문자열 데이터에 대해 pretty 출력에 대한 별다른 기능은 지원하지 않는다. 따라서 직접 문자열을 파싱하여 조작해주는 기능을 하드 코딩하여 구현해주어야 한다. 결과물은 다음과 같다.
function formatXml(xml) {
let formatted = '';
let reg = /(>)(<)(\/*)/g;
xml = xml.replace(reg, '$1\r\n$2$3');
let pad = 0;
xml.split('\r\n').forEach(function (node) {
let indent = 0;
if (node.match(/.+<\/\w[^>]*>$/)) {
indent = 0;
} else if (node.match(/^<\/\w/)) {
if (pad != 0) {
pad -= 1;
}
} else if (node.match(/^<\w[^>]*[^\/]>.*$/)) {
indent = 1;
} else {
indent = 0;
}
let padding = '';
for (let i = 0; i < pad; i++) {
padding += ' ';
}
formatted += padding + node + '\r\n';
pad += indent;
});
return formatted;
}
const data = '<Schema><User_Table_0><NO_DOCU>FI20030200220</NO_DOCU><NO_DOLINE>1</NO_DOLINE><CD_COMPANY>1000000</CD_COMPANY><CD_PC>7777777</CD_PC><DT_ACCT>20030227</DT_ACCT><NO_ACCT>221</NO_ACCT></User_Table_0><User_Table_1><CD_COMPANY>1000000</CD_COMPANY><CD_PC>7777777</CD_PC><NM_DEPT>회계부서1</NM_DEPT><DT_ACCT>20030305</DT_ACCT><NO_DOCU>FI20030200220</NO_DOCU></User_Table_1></Schema>'
const pretty_xml = formatXml(data);
console.log(pretty_xml);
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.