我无法访问XML文件中的任何节点。 我可以跟踪整个文件但是一旦我尝试访问XML内部的任何节点,跟踪就不会返回任何内容。 基本上使XML数据无法使用。
AS3代码:
var citReq1:URLRequest = new URLRequest("http://serverstuff.com...format=xml");
citReq1.contentType = "text/xml";
citReq1.method = URLRequestMethod.POST;
var citLoad1:URLLoader = new URLLoader();
citLoad1.load (citReq1);
citLoad1.addEventListener(Event.COMPLETE, citData)
function citData (event:Event):void{
var xmlInfo:XML = new XML(event.target.data)
trace(xmlInfo);
}
返回XML:
<realtimeinformation xmlns="http://schemas.datacontract.org/2004/07
/ie.dcc.rtpi2.services.publicservices.contracts.RealTimeBusInformation" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<errorcode>0</errorcode>
<errormessage/>
<numberofresults>1</numberofresults>
<stopid>243171</stopid>
<timestamp>07/12/2013 14:42:57</timestamp>
<results>
<result>
<arrivaldatetime>07/12/2013 14:47:00</arrivaldatetime>
<duetime>4</duetime>
<departuredatetime>07/12/2013 14:47:00</departuredatetime>
<departureduetime>4</departureduetime>
<scheduledarrivaldatetime>07/12/2013 14:47:00</scheduledarrivaldatetime>
<scheduleddeparturedatetime>07/12/2013 14:47:00</scheduleddeparturedatetime>
<destination>C.I.T.</destination>
<destinationlocalized>C.I.T.</destinationlocalized>
<origin>Kent Station</origin>
<originlocalized>Kent Station</originlocalized>
<direction>I</direction>
<operator>BE</operator>
<additionalinformation/>
<lowfloorstatus>no</lowfloorstatus>
<route>205</route>
<sourcetimestamp>07/12/2013 14:17:44</sourcetimestamp>
</result>
</results>
</realtimeinformation>
我做了很多搜索,找到了另外一个有这个问题的人,他们的解决方案涉及设置名称空间。当我尝试我可以访问XML中的节点,但点击屏幕上的任何其他按钮给我 一个Actionscript错误弹出窗口:
ReferenceError: Error #1065: Variable Final_fla::ns is not defined.
at Final_fla::MainTimeline/menu()[Final_fla.MainTimeline::frame1:125]
非常感谢任何帮助!
答案 0 :(得分:0)
你还没有证明哪里&amp;你是如何无法从XML中获取数据的。但是,我可以说你现在写的方式,xmlInfo
是你的citData
听众的局部变量;意思是:你没有把它保存在任何持久性的地方,当你离开听众时,任何对xmlInfo
的引用都会返回null
。
试试这个:
loadXML("http://serverstuff.com...format=xml");
function loadXML(request:String):void {
var req:URLRequest = new URLRequest(request);
req.contentType = "text/xml";
req.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, citData)
loader.load(req);
}
var xmlInfo:XML;
function citData(e:Event):void{
xmlInfo = new XML(e.target.data)
trace(xmlInfo);
exampleExternalFunction();
}
function exampleExternalFunction():void {
trace(xmlInfo.timestamp)
}
我对xml引用有点生疏,所以你可能需要xmlInfo.realtimeinformation.timestamp
。无论如何,在这个例子中,我们已经将XML存储在exampleExternalFunction()
可用的持久范围内,从而允许它引用我们从XML接收的属性。