我写了一个简单的xml代码,我尝试将xml文件读入flash,但是在输出中我得到了“undefined”。 代码如下。你知道如何解决这个问题吗?感谢。
xml文件(test.xml):
<?xml version='1.0' encoding='ISO-8859-1'?>
<note>
<to>Tom</to>
<from>Peter</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Flash程序:
xmlDoc=loadXMLDoc("test.xml");
x=xmlDoc.getElementsByTagName("to")[0];
t1.text=x.childNodes[0].nodeValue;
此致 约翰
答案 0 :(得分:1)
您确定XML文件的内容只是这一行吗?
Tom Peter Reminder Don't forget me this weekend!
如果是这样,那可能就是你的问题。或者如果问题中缺少您的标签,那么因为您需要告诉StackOverflow将其格式化为代码,方法是选择它并按下代码按钮(或Ctrl + K
)。请编辑您的问题,否则我无法判断您用于解析XML的语句是否存在问题。
我看到的另一个问题在你的ActionsScript中:
您可能无法加载XML文件,然后立即解析它,因为它不会按顺序发生(发生在不同的线程中)。您需要使用URLLoader
加载XML,并为URLLoader
的{{1}}事件添加事件监听器。在该方法中,执行解析XML所需的操作。
我假设你使用的是AS3而不是AS2
在从XML开始加载的主要方法
中Event.COMPLETE
创建新方法
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, showNote);
请务必确保您在舞台上声明了一个实例名称为function showNote(e:Event):void
{
var note:XML = new XML(e.target.data);
var to:String = note.to[0].text();
var from:String = note.from[0].text();
var body:String = note.body[0].text();
//t1.text = "To: " + to + "\nFrom: " + from + "\n\n" + body;
t1.htmlText = "<p>To: " + to + "</p><p>From: " + from + "</p><p>" + body + "</p>";
}
的文本字段,并将其属性设置为多行,并将其设置为包含此功能。
基本上,我认为原始代码的问题是以下之一:
t1
方法。还有其他方法,但这是最基本的。text()
和getElementsByTagName
遍历XML树的方式可能正确也可能不正确,但肯定更容易出错。 AS3提供了一种更直观的方法来获取来自XML的东西,例如我在我的例子中给出的东西。