ActionScript의 XML 예제: 인터넷에서 RSS 데이터 로드

Flash Player 9 이상, Adobe AIR 1.0 이상

RSSViewer 샘플 응용 프로그램에서는 다음과 같이 ActionScript에서 XML을 사용하여 작업할 수 있는 다양한 기능을 보여 줍니다.

  • XML 메서드를 사용하여 RSS 피드 형식으로 XML 데이터를 순회합니다.

  • XML 메서드를 사용하여 XML 데이터를 텍스트 필드에 사용하기 위해 HTML 형식으로 어셈블합니다.

RSS 형식은 XML을 통해 뉴스를 게시하는 데 주로 사용됩니다. 다음은 간단한 RSS 데이터 파일입니다.

<?xml version="1.0" encoding="UTF-8" ?>  
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"> 
<channel> 
    <title>Alaska - Weather</title>  
    <link>http://www.nws.noaa.gov/alerts/ak.html</link>  
    <description>Alaska - Watches, Warnings and Advisories</description>  
 
    <item> 
        <title> 
            Short Term Forecast - Taiya Inlet, Klondike Highway (Alaska) 
        </title>  
        <link> 
            http://www.nws.noaa.gov/alerts/ak.html#A18.AJKNK.1900 
        </link>  
        <description> 
            Short Term Forecast Issued At: 2005-04-11T19:00:00  
            Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office  
            Homepage: http://pajk.arh.noaa.gov 
        </description>  
</item> 
    <item> 
        <title> 
            Short Term Forecast - Haines Borough (Alaska) 
        </title>  
            <link> 
            http://www.nws.noaa.gov/alerts/ak.html#AKZ019.AJKNOWAJK.190000 
        </link> 
        <description> 
            Short Term Forecast Issued At: 2005-04-11T19:00:00  
            Expired At: 2005-04-12T01:00:00 Issuing Weather Forecast Office  
            Homepage: http://pajk.arh.noaa.gov 
        </description>  
    </item> 
</channel> 
</rss>

SimpleRSS 응용 프로그램은 인터넷에서 RSS 데이터를 읽은 후 헤드라인(제목), 링크 및 설명을 위해 데이터를 파싱한 다음 해당 데이터를 반환합니다. SimpleRSSUI 클래스는 UI를 제공하고, 모든 XML 처리 작업을 실행하는 SimpleRSS 클래스를 호출합니다.

이 샘플에 대한 응용 프로그램 파일을 가져오려면 www.adobe.com/go/learn_programmingAS3samples_flash_kr 을 참조하십시오. RSSViewer 응용 프로그램 파일은 Samples/RSSViewer 폴더에 있으며 이 응용 프로그램은 다음과 같은 파일로 구성됩니다.

파일

설명

RSSViewer.mxml

또는

RSSViewer.fla

Flash(FLA) 또는 Flex(MXML) 형식의 기본 응용 프로그램 파일입니다.

com/example/programmingas3/rssViewer/RSSParser.as

E4X를 사용하여 RSS(XML) 데이터를 순회하고 이에 해당하는 HTML 표현을 생성하는 메서드가 포함된 클래스입니다.

RSSData/ak.rss

샘플 RSS 파일입니다. 이 응용 프로그램은 Adobe에서 호스팅하는 Flex RSS 피드의 웹에서 RSS 데이터를 읽도록 설정되어 있습니다. 그러나 Flex RSS 피드의 스키마와 약간 다른 스키마를 사용하는 이 문서에서 RSS 데이터를 읽도록 응용 프로그램을 쉽게 변경할 수 있습니다.

XML 데이터 읽기 및 파싱

RSSParser 클래스에는 rssXML 변수에 저장된 입력 RSS 데이터를 HTML 형식 출력( rssOutput )이 들어 있는 문자열로 변환하는 xmlLoaded() 메서드가 포함되어 있습니다.

소스 RSS 데이터에 기본 네임스페이스가 포함되어 있는 경우 코드에서는 메서드의 시작 부분에서 기본 XML 네임스페이스를 설정합니다.

if (rssXML.namespace("") != undefined) 
{ 
    default xml namespace = rssXML.namespace(""); 
}

그러면 다음 줄에서 소스 XML 데이터의 내용을 반복하여 item 이라는 각 하위 속성을 검사합니다.

for each (var item:XML in rssXML..item) 
{ 
    var itemTitle:String = item.title.toString(); 
    var itemDescription:String = item.description.toString(); 
    var itemLink:String = item.link.toString(); 
    outXML += buildItemHTML(itemTitle,  
                            itemDescription, 
                            itemLink); 
}

처음 세 줄에서는 문자열 변수를 설정하여 XML 데이터에 대한 item 속성의 제목, 설명 및 링크 속성을 나타냅니다. 그러면 다음 줄에서 buildItemHTML() 메서드를 호출하여 HTML 데이터를 XMLList 객체 형식으로 가져옵니다. 이때 세 개의 새 문자열 변수를 매개 변수로 사용합니다.

XMLList 데이터 어셈블

HTML 데이터(XMLList 객체)는 다음과 같은 형식으로 되어 있습니다.

<b>itemTitle</b> 
<p> 
    itemDescription 
    <br /> 
    <a href="link"> 
        <font color="#008000">More...</font> 
    </a> 
</p>

메서드의 첫 번째 줄에서는 기본 xml 네임스페이스를 제거합니다.

default xml namespace = new Namespace();

default xml namespace 지시문에는 함수 블록 수준 범위가 있습니다. 즉, 이 선언의 범위가 buildItemHTML() 메서드입니다.

그 다음에 나오는 줄에서는 함수에 전달된 문자열 인수에 따라 XMLList를 어셈블합니다.

var body:XMLList = new XMLList(); 
body += new XML("<b>" + itemTitle + "</b>"); 
var p:XML = new XML("<p>" + itemDescription + "</p>"); 
 
var link:XML = <a></a>; 
link.@href = itemLink; // <link href="itemLinkString"></link> 
link.font.@color = "#008000";  
        // <font color="#008000"></font></a> 
        // 0x008000 = green 
link.font = "More..."; 
 
p.appendChild(<br/>);  
p.appendChild(link);  
body += p;

이 XMLList 객체는 ActionScript HTML 텍스트 필드에 적합한 문자열 데이터를 나타냅니다.

xmlLoaded() 메서드는 buildItemHTML() 메서드의 반환값을 사용하고 이 값을 문자열로 변환합니다.

XML.prettyPrinting = false; 
rssOutput = outXML.toXMLString();    

RSS 피드 제목 추출 및 사용자 정의 이벤트 보내기

xmlLoaded() 메서드는 소스 RSS XML 데이터의 정보를 기초로 rssTitle 문자열 변수를 설정합니다.

rssTitle = rssXML.channel.title.toString();

마지막으로 xmlLoaded() 메서드는 데이터가 파싱되어 사용할 수 있음을 응용 프로그램에 알리는 이벤트를 생성합니다.

            dataWritten = new Event("dataWritten", true);