2012-04-19 4 views
0

배경AS3, 여러 개의 XML 파일로드?

저는 표준화 된 래퍼를 빌드해야하는 컴퓨터 기반 교육 프로젝트가 있습니다. 강좌 페이지는 XML을 사용하여 생성됩니다. 각 페이지에는 고유 한 XML 파일이 있습니다. 예를 들어 Page 1은 1.xml에서 모든 내용을로드하고 Page 2는 2.xml 등이됩니다. 페이지 수는 모든 클라이언트가 동일하지 않기 때문에 항상 다릅니다.

내가 함께 테스트하기 위해 열 개 XML 파일을 만들었습니다,하지만 내 인생 내가 다음 알아낼 수 없습니다

문제 :

  • 플래시를 사용하여,의 XML 파일의 양을 계산 폴더 (나는 모든 것을 바꿀 수 있다면 어떤 서버 측에 대한 액세스 권한이 없습니다.) 어떤 유형의 루프와 함께 IOErrorEvent.IO_ERROR을 사용하는 것에 대해 생각했지만 어디서부터 시작해야할지 몰랐습니다.
  • 플래시 사용 모든 XML 파일의 모든 정보를 사용자가 코스를 진행하면서 페이지에 표시 할 하나의 배열 또는 벡터. 사용자는 코스를 건너 뛸 수 있습니다 (예 : 5 페이지에서 20 페이지로 건너 뛰기를 원할 수도 있습니다). 그래서 객체 또는 연관 배열이 내 아이디어였습니다

플래시는 파일 시스템에 액세스 할 수 없지만 xml 파일의 이름은 1.xml, 2.xml, 3.xml, 4.xml, 5가됩니다. xml 등 ... (XML 파일이 페이지 번호와 직접적으로 관련되므로이 명명 규칙은 결코 변경되지 않습니다)이 작업을 수행하는 방법이 있어야합니다. 내 생각은 각 파일을로드하고로드하는 루프 유형을 만드는 것이 었습니다. 파일을 찾을 수 없기 때문에 오류가 발생하면 루프에서 빠져 나옵니다. 아래의 내 작업 파일을 시각적으로 볼 수 있습니다.

현재 작업 파일

내가 만든 작은 정보를 가지고와 내가 심지어이 접근하는 방법을 알고하지 않기 때문에 작업을 시작했습니다 파일은. 하지만, 여기에 내가 가진 무엇 :

xml 파일또한 (내가하지 가지고 DO (5 또는 100 또는 클라이언트가 필요하지만 그들은 모두 같은 포맷됩니다 어떤 다른 사람이 될 수있다, 기억) 이 업데이트 Iv'e 내가 말했듯이 데이터베이스의 모든 유형에 대한 액세스가 너무 XML 파일은 **

) 내 최선의 선택이 될

<?xml version="1.0" encoding="iso-8859-1"?> 
<content> 
    <title>My First Page</title> 
    <body>This is the body of my new page I just built using XML</body> 
    <img>graphic.jpg</img> 
</content> 

XmlClass.as ** 코드는 아래를 참조 할 것 , 이것이 출발점입니다. 1 톤의 것들을 해결할 필요가 있지만, 내가 향하고있는 길은 올바른 것인지 확인하고 싶다;)이 xml 아이디어가 이것에 접근하는 가장 좋은 방법인지 확신 할 수 없다. 클라이언트가 xml 파일을 자체적으로 만들고 유지 관리한다면 작업 부하가 줄어들 것이라고 생각했습니다.

감사합니다.

편집

내 질문에 잘못 기록 된 내 응답으로 판단. 다음은 위에서 설명한 것보다 더 잘 설명 할 수있는 주석으로 작업 한 XmlClass.as 파일입니다.} 코드에서 볼 수 있듯이 for 루프에서 xml 파일에 대한 각 링크를로드 할 때 사용할 수있는 _loaderArray을 만드는 메서드를 만듭니다.

내가하려고하는 것은 xmlx 파일을 가져 와서 모든 XML 파일을 한 곳에서 가질 수있는 배열 또는 무언가를 만드는 것입니다.

XmlClass.as

package 
{ 
import flash.display.*; 
import flash.xml.*; 
import flash.events.*; 
import flash.net.*; 

public class XmlClass extends XMLDocument 
{  
    private var _xml:XML;  
    private var _loader:URLLoader; 
    private var _request:URLRequest; 
    private var _loaderArray:Array; /* this is to store my paths to each xml file */ 
    private var _xmlArray:Array; /* this is where I want to store all the information in all the xml files */ 
    private var _fileError:Boolean; /* this tells me that I have hit a 404 trying to load one of the files */ 

    public function XmlClass():void 
    { 
     BuildLoaderArray(); 
     BuildXmlArray(); 
    } 
    /* build the xml array so I can have one place that stores each of the xml files content */ 
    private function BuildXmlArray():void 
    { 
     _loader = new URLLoader(); 
     for(var i=1;i<_loaderArray.length;i++) 
     { 
      /* check to see if we have a 404 error and stop the loop */ 
      if(_fileError){break;} 
      _request = new URLRequest(_loaderArray[i]);/* load each of the xml paths to load into the array */ 
      _loader.addEventListener(Event.COMPLETE,ProcessXML); 
      _loader.addEventListener(IOErrorEvent.IO_ERROR,XMLioErrorHandler); 
      _loader.load(_request); 
     } 
     trace(_xmlArray);/* show me the newly created xml array that has all the files information */ 
    } 
    /* build all the links to the xml files for the loader */ 
    private function BuildLoaderArray():void 
    { 
     _loaderArray = new Array(); 
     for(var i=1;i<201;i++) 
     { 
      _loaderArray.push("../xml/"+i+".xml"); 
     } 
    } 
    private function ProcessXML(e:Event):void 
    { 
     _xmlArray = new Array(); 
     _xml = new XML(e.target.data); 
     _xmlArray.push(_xml); 
    }  
    private function XMLioErrorHandler(e:IOErrorEvent):void 
    { 
     _fileError = true; 
     trace("Loading Error") 
    } 
} 
} 
+0

프로젝트를 구성 할 XML을 만듭니다. 예를 들어 정보가 들어있는 노드가있을 경우 페이지 번호와 해당 페이지의 해당 XML에 대한 URL이 필요합니다. 이렇게하면 XML에서 프로젝트를 동적으로 구성 할 수 있습니다. –

+0

@ The_asMan : 저 아이디어가 마음에 들었고 웹에서 비슷한 것을 보았습니다. 그러나 저의 머리 속에 떠오른 생각은 저와의 상호 작용이 거의 없으면 가능한 한 역동적으로 만드는 것이 었습니다. 구성 파일을 사용하여이 작업을 수행 할 수있는 방법이 있어야합니다. 내가 해결책을 찾지 못하면 당신의 생각은 나의 유일한 선택이 될 것입니다. – Mike

+0

서버 쪽 스크립트에 액세스 할 권한이 없으므로 동적 소재를 생성 할 수있는 방법이 없습니다. –

답변

0

이로드 할 수있는 여러 XML 파일을 관리 할 수있는 적절한 방법은 아니다. 먼저 데이터의 일부로로드 될 xml 파일의 목록을 포함하는 하나의 configure xml 파일을 만들어야하며, 먼저 xml 파일을로드해야합니다. 그러면 xml 파일을 먼저로드해야합니다. xml 파일을 구성하십시오.

xml 파일 이름을 구성하고 개수를 유연하게 설정할 수도 있습니다. 어떠한 경우에도 작동 할 것이고 실행 시간을 줄 필요가 없습니다. 귀하/귀하의 고객이 변경하고자 할 때마다 구성 XML 파일을 변경하십시오. 끝났다.