2012-01-22 22 views
1

私は、javascript配列にxmlファイルの一部を取得しようとしています。私は多くのチュートリアルをverryしようとしましたが、私はそれを動作させることができません。 は、ここで私が使用するXMLファイルの一部です:私はのようなjavascript配列に答えを使いたいxmlファイルからjavascript配列へ

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

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

は、そのシンプルで小さなJavaScriptを知っている誰もが、あります仕事は?

+0

あなたは2つの要素を持つ配列FAnswersを作成しました。あなた自身の質問に答えたようです。 – Jason

+1

@ Jason私は、XMLを配列に解析する方法について質問しています。 –

答えて

0

したがって、javascriptで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を含む文字列を渡すと、それは配列を返します:

+0

私は間違っているかもしれませんが、2番目の部分では、答えが何であるかを事前に知る必要がありますか?私はXMLファイルがユーザーのアップロードによって変更されるため、知っておく必要があります。 –

+0

私はあなたの質問を正しく理解しているかどうか分かりませんが、実際の回答を事前に知る必要はありません。それはあなたのための機能です。あなたのためにXML文字列から回答を抽出します。 –

+0

私は、このコードのルールが、事前に知っていなければならないと思っていました。「var xml_string = 'こんにちはさような'; '、doesnそのルールには何がありますか? 別の質問ですが、コード内で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); 
関連する問題