2012-01-22 7 views
1

자바 스크립트 배열에 XML 파일의 일부를 가져 오려고합니다. verry 많은 튜토리얼을 시도했지만, 난 그냥 작동시키지 못할 수 있습니다.자바 스크립트 배열의 xml 파일 부분

<answers> 
     <answer id="0">hello</answer> 
     <answer id="1">goodbye</answer> 
    </answers> 

을 내가 좋아하는 자바 스크립트 배열의 답변을 사용하려면 : 여기 내가 사용하려는 XML 파일의 일부

var FAnswers = new Array("hello","goodbye"); 

간단한 약간의 자바 스크립트를 알고있는 사람은, 거기에 그 그 일을합니까?

+0

방금 ​​만든 배열은 2 개의 요소로 된 FAnswers입니다. 네가 네 자신의 질문에 답한 것 같아. – Jason

+1

@ Jason 질문은 XML을 배열로 구문 분석하는 방법에 관한 것이라고 생각합니다. –

답변

0

그래서 자바 스크립트에서 XML을 구문 분석해야합니다. 난 그냥했습니다이 예를 살펴 보자 :

// Some XML, say loaded with AJAX, etc. 
var str = '<response><answers><answer id="0">hello</answer><answer id="1">goodbye</answer></answers><data id="2341-63">Test data</data></response>'; 

var parser, xml; 
if (window.DOMParser) { 
    parser = new DOMParser(); 
    xml = parser.parseFromString(str, 'text/xml'); 
} 
else { // IE 
    xml = new ActiveXObject('Microsoft.XMLDOM'); 
    xml.async = false; 
    xml.loadXML(str); 
} 

var nodes = xml.getElementsByTagName('answer'); 

var i, l = nodes.length, answers = []; 
for (i = 0; i < l; i++) { 
    answers.push(nodes[i].childNodes[0].nodeValue); 
} 

console.log(answers) // ["hello", "goodbye"] 
0

당신이 그런 일을 할 필요가 the answer to this question에 따르면 (당신이 XHR를 통해 XML을로드 가정) :

// get XML 
var xml = xhr.responseXML; 
var target = new Array(); 

// get answers 
var answers= xml.getElementsByTagName("answer"); 
for (var i = 0; i < answers.length; i++) { 
    target.push(answers[i].nodeValue); 
} 
2

다음과 같은 기능을한다 트릭을 수행합니다

function get_answers_from_xml_string(xml_string) { 
    // Parse the XML string into a XMLDocument 
    var doc = window.DOMParser 
       ? new DOMParser().parseFromString(xml_string, 'text/xml') // Standard 
       : new ActiveXObject('Microsoft.XMLDOM').loadXML(xml_string); // IE 

    // Find the answer nodes 
    var answers_nodes = doc.getElementsByTagName('answer'); 
    var answers = []; 

    // Loop through them and save their text content into an array 
    for (var i = 0; i < answers_nodes.length; i++) { 
     answers.push(answers_nodes[i].firstChild.data) 
    } 

    return answers; 
} 

그냥 그것을 답변 XML을 포함하는 문자열을 전달하고 배열 반환합니다

var xml_string = '<answers><answer id="0">hello</answer><answer id="1">goodbye</answer></answers>'; 
var answers = get_answers_from_xml_string(xml_string); 
// answers == ["hello", "goodbye"] 
+0

내가 틀렸을 수도 있지만, 두 번째 부분에서는 대답이 무엇인지 미리 알아야합니까? 내 XML 파일은 사용자가 업로드하여 변경되므로 알 필요가 있습니다. –

+0

귀하의 질문을 정확하게 이해할 수 있을지 모르지만 사전에 실제 답변을 알 필요가 없으며 귀하가 그 기능을 가지고 있습니다. 그것은 당신을 위해 XML 문자열에서 답변을 추출합니다. ';', 아무튼 'var에 xml_string ='<응답 ID = "0"> 안녕하세요<응답 ID = "1"> 안녕 : 코드의이 규칙이 있기 때문에 –

+0

나는, 내가 사전에 알고있을 것이라고 생각 그 규칙에 무슨 상관이 있니? 또 다른 질문으로, 코드에서 xml 파일에 대한 링크가 있어야합니까? –

0
How about this way: The simplest - 

var xml = "<answers><answer id='0'>hello</answer><answer id='1'>goodbye</answer></answers>"; 
    document.write (xml); 
    var doc = document.getElementsByTagName('answer'); 
    var arrayAnswers = []; 
    for(var i=0, len = doc.length; i < len; i++) 
    { 
     arrayAnswers.push(doc[i]); 
    } 
    alert(arrayAnswers[0].innerHTML); 
    alert(arrayAnswers[1].innerHTML); 
관련 문제