XML DOM 속성

XML DOM 속성 프로퍼티

엘리먼트 노드의 속성 프로퍼티는 속성 노드의 리스트를 반환한다.

속성 노드의 getNamedItem() 메서드는 속성 노드를 반환한다.

다음 예제를 보자.

var text="<person>";
text +=  "<name>name1</name>";
text +=  "<address street='street1' city='city1'>address1</address>";
text +=  "<phone>phone1</phone>";
text +=  "</person>";

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
}
else // 인터넷 익스플로러
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(text); 
} 

var list = xmlDoc.getElementsByTagName('address')[0].attributes; 

console.log("attributes length = " + list.length);
console.log(list.getNamedItem("street").nodeName + ": "
    + list.getNamedItem("street").nodeValue);
console.log(list.getNamedItem("city").nodeName + ": "
    + list.getNamedItem("city").nodeValue);

위 코드를 실행한 결과는 다음과 같다.

attributes length = 2
street: street1
city: city1

XML DOM getAttribute()와 setAttribute() 메서드

getAttribute() 메서드는 속성 값을 반환한다.

setAttribute() 메서드는 기존 속성의 값을 변경하거나 새 속성을 만들어낸다.

다음 예제를 보자.

var text="<person>";
text +=  "<name>name1</name>";
text +=  "<address street='street1' city='city1'>address1</address>";
text +=  "<phone>phone1</phone>";
text +=  "</person>";

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
}
else // 인터넷 익스플로러
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(text); 
} 

var addressNode = xmlDoc.getElementsByTagName('address')[0];
console.log("Before : " + addressNode.getAttribute('city'));
addressNode.setAttribute('city', 'city2');
console.log("After : " + addressNode.getAttribute('city'));

위 코드를 실행한 결과는 다음과 같다.

Before : city1
After : city2

XML DOM getAttributeNode() 메서드

getAttributeNode() 메서드는 속성 노드를 반환한다. nodeValue 프로퍼티를 이용하면 속성 노드의 값을 구해서 변경할 수 있다.

다음 예제를 보자.

var text="<person>";
text +=  "<name>name1</name>";
text +=  "<address street='street1' city='city1'>address1</address>";
text +=  "<phone>phone1</phone>";
text +=  "</person>";

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(text,"text/xml");
}
else // 인터넷 익스플로러
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML(text); 
} 

var cityNode = xmlDoc.getElementsByTagName('address')[0].getAttributeNode('city'); 
console.log("Before: " + cityNode.nodeValue);
cityNode.nodeValue = 'city3';
console.log("After: " + cityNode.nodeValue);

위 코드를 실행한 결과는 다음과 같다.

Before : city1
After : city3

관련 수업

← 이전다음 →