如何读取JavaScript中的XML?

如何读取JavaScript中的XML?,javascript,html,xml,Javascript,Html,Xml,好的,我得到了这个xml文件: <?xml version="1.0" encoding="UTF-8" ?> <level> <tiles> <row>1000000000000001</row> <row>1000000000000001</row> <row>1000000000000001</row> <

好的,我得到了这个xml文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<level>
    <tiles>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1000000000000001</row>
        <row>1111111111111111</row>
    </tiles>
</level>

函数loadXML(){
load(“levels/test.xml”);
xmlDoc.onload=readLevel();
}
函数readLevel(){
投掷(xmlDoc);
if(xmlDoc.getElementsByTagName(“tiles”)[0].hasChildNodes(){
var rowNum=xmlDoc.getElementsByTagName(“tiles”).getChildNodes();
级别=[];
对于(变量i=0;i
开头的(特定)元素名保留的。您根本不需要指定名称空间。抱歉,但在这段代码中,似乎从未调用过readLevel。@CynPrime:这是什么意思?您是指读取还是运行它?
readLevel()
是在
onreadystatechange
处理程序中调用的。我已经尝试过了,它在所有主流浏览器中都能正常工作。
            function loadXML(){
                xmlDoc.load("levels/test.xml");
                xmlDoc.onload = readLevel();
            }
            function readLevel() {


                throw(xmlDoc);

                if(xmlDoc.getElementsByTagName("tiles")[0].hasChildNodes()){
                    var rowNum = xmlDoc.getElementsByTagName("tiles").getChildNodes();
                    level = [];
                    for(var i = 0; i < rowNum; i++){
                        level[i] = [];
                        var tempStr = xmlDoc.getElementsByTagName("tiles").childNodes[i].textContent;
                        for(var j = 0; j < 16; j++){
                            level[i][j] = parceInt(tempStr.charAt(j));
                        }

                    }
                }

                for (var i = 0; i < level.length; i++) {
                    blockArray[i] = []; // Create the second level for this index
                    for (var j = 0; j < level[i].length; j++) {
                        var tempImg = new Image();
                        tempImg.src = "images/block" + level[i][j] + ".png";
                        blockArray[i][j] = new block(j * blockSize, i * blockSize, level[i][j], false, false, tempImg);
                        //throw('blockArray['+i+']'+j+'] = ' + level[i][j]);
                    }
                }
            }
function readLevel(xmlDoc) {
    alert(xmlDoc.documentElement.tagName);
    // Your existing code goes here
};

var createXmlHttpRequest = (function() {
    var factories = [
        function() { return new XMLHttpRequest(); },
        function() { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); },
        function() { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); },
        function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
    ];

    for (var i = 0, len = factories.length; i < len; ++i) {
        try {
            if ( factories[i]() ) return factories[i];
        } catch (e) {}
    }
})();

var xmlHttp = createXmlHttpRequest();
xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        readLevel(xmlHttp.responseXML);
    }
};

xmlHttp.open("GET", "levels/test.xml", true);
xmlHttp.send(null);