WonHada.com으로 이전

[AS3] XML Namespace(네임스페이스) 본문

플래시/플렉스[Flash/Flex]

[AS3] XML Namespace(네임스페이스)

반주부 2007. 11. 24. 17:41
반응형


딴동네 스터디 2회 때 숙제를 내줬습니다..XML 파일을 주고 그걸로 RSS리더를 만드는 것이었는데 조금 어려운 모양이더군요..질문을 올렸길래 보니 설명을 잠깐 하고 넘어갔던 네임스페이스 부분이었습니다..

var xml:XML =
 <feed version="0.3" xmlns="http://purl.org/atom/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>Adobe Labs</title>
  <tagline>News and information on Adobe Labs.</tagline>
 </feed>;

위 XML은 Adobe labs의 피드입니다..위 XML에서 title값을 불러오려면 어떻게 해야할까요?

trace(xml.title.toXMLString());

될까요? 안됩니다..왜냐면 xmlns="http://purl.org/atom/ns#" 이 부분 때문이죠..이게 뭐냐면 '기본 네임스페이스'라는 건데요..아래를 잠깐 보시죠..

default xml namespace = new Namespace("http://airdev.tistory.com/092NS");
var xml:XML = <root/>;
trace(xml.toXMLString()); //<root xmlns="http://airdev.tistory.com/092NS"/>

위와 같이 생성된 기본 네임스페이스는 이하 노드에서 prefix(<prefix:node>, 접두사) 없이 사용할 수 있기 때문에 다른 사용자가 가져다 쓸 때 주의할 필요가 있습니다..

그럼 네임스페이스를 참조해서 처음 위에서 하려고 했던 title을 가져와 보겠습니다..

var xml:XML =
 <feed version="0.3" xmlns="http://purl.org/atom/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>Adobe Labs</title>
  <tagline>News and information on Adobe Labs.</tagline>
 </feed>;

var ns:Namespace = xml.namespace(); //기본 네임스페이스 참조
trace(xml.ns::title.toXMLString());
/*
<title xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">Adobe Labs</title>
*/


참고로 'dc' 네임스페이스를 참조하려면..

var dcNS:Namespace = xml.namespace("dc");

이와 같이 하면 됩니다..

만약 네임스페이스가 뭔지, 왜 써야 하는지 궁금하다면 며칠전 소개해 드렸던 아래 사이트를 참고하시기 바랍니다..
http://www.cadvance.org/?leftmenu=doc/include/total_menu.asp&mainpage=doc/xml/xml_doc/xml_namespace.asp 






반응형