2012-08-09 3 views
0

"musics"폴더에 "stage1.txt"라는 XML 파일을 만들었습니다. XML 파일은 다음과 같습니다Actionscript 2 reading XML

<music> 
    <speed>10</speed> 
    <time> 
     <note>1</note> 
     <note>12</note> 
     <note>32</note> 
     <note>41</note> 
    </time> 
    <where> 
     <lane>3</lane> 
     <lane>2</lane> 
     <lane>1</lane> 
     <lane>4</lane> 
    </where> 
</music> 

그리고 플래시 파일에 내가 XML 파일 불러 다음 코드를 사용 :

다음 플래시 파일에 내가 데이터를 얻기 위해 다음 코드를 사용합니다.

var myXML:XML = new XML(); 
myXML.ignoreWhite=true; 
myXML.load("musics/stage"+_global.stages+".xml"); 
var temp = 0, temp2 = 0; 
myXML.onLoad = function(success){ 
if (success){ 
trace (myXML); 
} 
} 

여기까지 괜찮 았습니다. 그러나 XML 파일의 첫 번째 가치 인 "속도"를 생각해 보았습니다. 이 코드 사용하여 시도 :

var speed = myXML.firstChild.firstChild.nodeValue; 

을했지만 작동하지 않는 것 같습니다. 다른 시도 :

myXML.firstChild.childNodes[0].nodeValue 

하지만 너무 효과가 없습니다.

답변

1

추가 첫 번째 칠을 추가하십시오. 왜 그런지 잘 모르겠지만 파서가 전체 문서를 별도의 수준으로 처리하는 것 같습니다.

정상적으로 작동하지 않을 때 필요한 물건을 찾는 가장 좋은 방법은 포함되어있는 것을 추적하고 확인하는 것입니다. 그러므로 xml 객체 ('trace (myXML)')로 시작하여 필요한 정보를 찾을 때까지 'trace (myXML.firstChild)'-> 'trace (myXML.firstChild.firstChild)'-> 등을 건너 뜁니다. .

+0

글쎄,이게 실제로 문제를 해결하는 데 도움이되었습니다. 감사 :) –

0

타사 라이브러리를 사용하여 XML을 Object로 변환해야합니다. Greensock의 XMLParser을 사용할 수 있습니다. 간단한 자습서와 샘플 코드가 있습니다.

코드는 훨씬 더 편리 (튼튼한) 방식으로 그럼 당신은 당신의 XML의 노드를 참조 할 수 있습니다이

import gs.dataTransfer.XMLParser; 
XMLParser.load("musics/stage"+_global.stages+".xml", onFinish); 
function onFinish($success:Boolean, $results:Object, $xml:XML):Void { 
    if ($success) { 
     trace("The speed is: "+$results.speed[0].nodeValue);1 

    } 
} 

처럼 보일 수 : myMXL.speed[0].nodeValue.

당신이 시도하는 방식으로 노드를 참조하는 것은 매우 나쁜 습관입니다. XML이 바뀌면 코드가 손상됩니다. ...

+0

도움 주셔서 감사합니다. 위의 코드를 XML Parser와 함께 사용하려고 시도했지만 결과가 "속도가 : [object Object]"라는 결과를 반환합니다. 어떤 생각? –

+0

코드에서'nodeValue'를 놓쳤습니다. 편집본 응답을 참조하십시오. – strah