我正在尝试从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文件中创建新的
在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不会对本地文件起作用,如果没有,我可以使用其他方式来实现我的目标?
答案 0 :(得分:0)
XML在Titanium中没有很大的支持。此外,XML通常很难处理......
为什么不使用JSON有效负载/文档!
格式化JSON,使其成为水果对象数组
然后,您只需将有效负载解析为从Web服务或本地文件返回的javascript对象:
var fruits = JSON.parse(yourHTTPObj.responseData);
现在你可以遍历水果对象并说:
if (fruits[i].type === 'Apple') { //do something };