在我的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
你知道我做错了什么吗?或者只是外部文件?
答案 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内容)