admin管理员组文章数量:1355642
I'm trying to get a part of an xml file into a javascript array. I've tried verry much tutorials, but I just can't get it working. Here's the part of the xml file i want to use:
<answers>
<answer id="0">hello</answer>
<answer id="1">goodbye</answer>
</answers>
I want to use the answers in a javascript array like:
var FAnswers = new Array("hello","goodbye");
Is there anybody, who knows a simple little javascript that does the job?
I'm trying to get a part of an xml file into a javascript array. I've tried verry much tutorials, but I just can't get it working. Here's the part of the xml file i want to use:
<answers>
<answer id="0">hello</answer>
<answer id="1">goodbye</answer>
</answers>
I want to use the answers in a javascript array like:
var FAnswers = new Array("hello","goodbye");
Is there anybody, who knows a simple little javascript that does the job?
Share Improve this question asked Jan 22, 2012 at 13:53 Jan ThiemenJan Thiemen 1031 gold badge3 silver badges11 bronze badges 2- you just created an array FAnswers with 2 elements. It seems like you've answered your own question. – Jason Commented Jan 22, 2012 at 13:54
- 1 @Jason I believe the question is about how to parse the XML into the array that. – Rick Kuipers Commented Jan 22, 2012 at 13:59
4 Answers
Reset to default 4The following function should do the trick:
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;
}
Just pass it a string containing the XML with answers and it will return an array:
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"]
So you need to parse XML in javascript. Take a look at this example I've just made:
// 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"]
According to the answer to this question you need to do something like that (assuming you load your XML via XHR):
// 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);
}
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);
本文标签: part of xml file to javascript arrayStack Overflow
版权声明:本文标题:part of xml file to javascript array - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744054860a2583071.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论