파크로그

 

Javascript 로 XML을 불러오는 과정에서, 이전에는 잘 되었던 기능이 getElementsByTagName 을 읽지 못하였고, 

 

확인해보니 XML을 불러오기는 하나, responseXML 만 Null 을 반환하는 경우가 생겼다.

 

기존 코드

	var xhttp = new XMLHttpRequest();
	var url = "../xml/test.xml"

	if(xhttp){
		xhttp.open("GET", url, true);
		xhttp.onreadystatechange = function() {
			if (this.readyState == 4 && this.status == 200) {
				myFunction(this);
			}
		};
		xhttp.send();
	}
    
    function myFunction(xml) {

    var xmlDoc = xml.responseXML;
    var name = xmlDoc.getElementsByTagName("name");
    var content = xmlDoc.getElementsByTagName("content");

       ~~ 중략 ~~

console을 통해 xmlDoc를 확인하니, responseXML 만 Null 이고, responseText등 다른 값은 불러오고 있는데,

추측컨데 xml 파일 내에서 Type이 정의되지 않아 발생하는 에러인 듯 보였다.

 

mimeType을 설정해보았으나 해결되지 않아, DOMparser를 이용해 responseText를 불러와 파싱하는 법을 택했다.

 

수정코드

// 기존코드
// xmlDoc 를 단순 responseXML 로 저장

var xmlDoc = xml.responseXML;

// 수정코드
// xmlDoc 를 responseXML 을 불러오면, 기존코드를 사용하고, 불러오지 못하면 responseText를 xml로 파싱

var xmlDoc
var parser = new DOMParser();
if(xml.responseXML){
	xmlDoc = xml.responseXML;
} else {
	xmlDoc = parser.parseFromString(xml.responseText, "application/xml");
}

 

profile

파크로그

@파크park

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!