Flash解析XML而不加载外部文件(as2)

时间:2009-11-08 23:10:13

标签: xml flash parsing actionscript-2

在我的flash中,套接字服务器返回一些我需要解析的xml数据,但似乎启动XML对象的唯一方法是使用XML.Load()来加载外部文件,但是我的XML文件已加载到变量

trace(“raw:”+ msg);   msgArea.htmlText + =“
更新远程播放器loc”;   var playerLocXMLOb = new XML(msg);   playerLocXMLOb.ignoreWhite = true;

迹(playerLocXMLOb.firstChild.firstChild.nodeValue);

只返回

raw: <ploc><x>348</x><y>468</y><uid>red</uid></ploc>
null

你知道我做错了什么吗?或者只是外部文件?

4 个答案:

答案 0 :(得分:1)

不,你做得不对,我会尝试

trace(playerLocXMLOb.x);

AS对XML有一些非常奇怪的东西,你可以通过将其视为成员变量来实际访问节点。试一试,看看会发生什么。

答案 1 :(得分:0)

不确定出了什么问题,但这是我过去常常解决的问题:

docXML = new XML(msg);
    XMLDrop = docXML.childNodes;
    XMLSubDrop = XMLDrop[0].childNodes;
    _root.rem_x = (parseInt(XMLSubDrop[0].firstChild));
    _root.rem_y = (parseInt(XMLSubDrop[1].firstChild));
    _root.rem_name = (XMLSubDrop[2].firstChild);

答案 2 :(得分:0)

firstChild.nodeValue怎么样?

trace(playerLocXMLOb.firstChild.nodeValue);//should trace 438

答案 3 :(得分:0)

“x”节点中实际存在另一个文本XMLNode - 您希望获取此文本节点的nodeValue,而不是“x”节点。

var msg:String = "<ploc><x>348</x><y>468</y><uid>red</uid></ploc>";
trace("raw: "+msg);
var playerLocXMLOb = new XML(msg);
trace(playerLocXMLOb.firstChild);//returns the root XMLNode named ploc
trace(playerLocXMLOb.firstChild.firstChild);//returns the child XMLNode named x
trace(playerLocXMLOb.firstChild.firstChild.firstChild);//returns the child XMLNode, which is a text node
trace(playerLocXMLOb.firstChild.firstChild.firstChild).nodeValue;//returns the String contents of that text node

当您跟踪文本XMLNode(playerLocXMLOb.firstChild.firstChild.firstChild)时,您只看到一个字符串,但它实际上是一个对象(其toString方法只返回其String内容)