从本地xml文件动态创建列表项

时间:2014-05-06 20:14:36

标签: javascript xml xmlhttprequest appcelerator createelement

我正在尝试从XML文件创建菜单。我想要创建菜单的HTML文件位于我的主项目文件夹中。该文件夹还包含一个xml文件夹,我的xml文件(fruitDB.xml)位于该文件夹中。我知道有几种加载XML文件的方法,有些方法只能在线工作。最终,该菜单用于HTML5移动应用程序(不知道这是否有用),使用Appcelerator构建。

我已经阅读了一些消息来源,但我仍然不清楚如何加载XML文件。我的标题标记中包含以下代码:

<script type="text/javascript">

    function init(){
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", "xml/fruitDB.xml", false);
        xmlhttp.setRequestHeader('Content-Type', 'text/xml');
        xmlhttp.send();
        var xmlDoc = xmlhttp.responseXML;
        var Fruits = xmlDoc[];

        alert(Fruits);

        for (var i = 0; i < Fruits.children.length; i++) {
            alert("hi");
            var Fruit = Fruits.children[i];
            var Name = Fruits.getElementsByTagName("name");
            var Thumb = Fruits.getElementsByTagName("image");

            var list = document.getElementById("menuButtons");
            var listEntry = document.createElement("LI");
            listEntry.document.createTextNode(Name);
            list.appendChild(listEntry);
        }
    }

</script>

我在这里尝试做的是打开init();函数使用,加载xml文件,虽然我不确定是否给出路径(就像我做的那样)是正确的。加载XML后,它应该在我的HTML文件中创建新的

  • ,并为它们命名(最终是一个图像),这些名称存储在xml文件中,直到放置xml中的所有项目作为列表项。抱歉长句:P。

    在xmlhttp.send();我在控制台中收到以下错误:

    XMLHttpRequest cannot load file:///D:/folder/folder/folder/xml/fruitDB.xml. Received an invalid response. Origin 'null' is therefore not allowed access.
    

    这是否意味着使用XMLHttpRequest不会对本地文件起作用,如果没有,我可以使用其他方式来实现我的目标?

  • 1 个答案:

    答案 0 :(得分:0)

    XML在Titanium中没有很大的支持。此外,XML通常很难处理......

    为什么不使用JSON有效负载/文档!

    格式化JSON,使其成为水果对象数组

    然后,您只需将有效负载解析为从Web服务或本地文件返回的javascript对象:

    var fruits = JSON.parse(yourHTTPObj.responseData);
    

    现在你可以遍历水果对象并说:

    if (fruits[i].type === 'Apple') { //do something };