作者terrylchen (某T)
看板Flash
标题[问题] 读取xml某个节点的nodeValue得到null值
时间Wed Jan 9 01:36:08 2008
小弟最近因为公司接了一个widget的案子,
所以k了一下xml,也完成了这个案子。
而手头上另外一个案子是做上传照片的活动,
由於不懂得怎麽连资料库,所以就想了一个偷吃步的方法。
我将程式设计师写的asp改写成xml格式,
然後将我需要的变数留下来,
最後成功地写出了包含使用者上传的照片和连结的页面网址的xml档,
并且成功地load进flash,如此一来不用连资料库也可以让flash自动更新。
但是在把值取出的时候却发生了一个问题,
照片的路径可以正确取出,但是网址的部份传回来却是null值。
我查了资料,资料上解释说:
「如果XML物件为文字节点,它的nodeType是3,nodeValue是节点文字;
如果XML物件是XML元素(节点类型是1),它的nodeValue是null,而且是唯读。」
我的问题来了,请问为什麽网址的这个节点会变成XML元素?
我该如何将这个节点中的值(网址)取出?
附上asp产生的xml:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<exp>
<photo>img/SharePhoto/photo/6141706.gif</photo>
<expURL>PF_ShareShow.asp?ID=6</expURL>
</exp>
<exp>
<photo>img/SharePhoto/photo/2131706.jpg</photo>
<expURL>PF_ShareShow.asp?ID=2</expURL>
</exp>
<exp>
<photo>img/SharePhoto/photo/1154706.jpg</photo>
<expURL>PF_ShareShow.asp?ID=1</expURL>
</exp>
</rss>
补充一下,我把xml读进来之後存到阵列里了。
阵列我也是才刚接触而已,所以我用的方法很笨。
as如下:
var expXML = new XML();
expXML.ignoreWhite = true;
expXML.onLoad = function (success) {
if (success){
trace("EXP Loaded successfully");
var exp : Array = expXML.firstChild.childNodes;
trace(exp[0].firstChild.nextSibling.firstChild.nodeValue);
} else {
trace("Fail to load EXP");
}
};
我如果trace exp[0].firstChild.nextSibling得出来的是
<expURL>PF_ShareShow.asp?ID=6</expURL>
所以如果trace exp[0].firstChild.nextSibling.nodeValue
应该可以取出它的值不是吗?可是出来的值却是null。
我必须改成trace exp[0].firstChild.nextSibling.firstChild.nodeValue,
才能得出网址。
虽然成功读出值,可是逻辑似乎怪怪的。
可否请各位高手的指点一下,谢谢m(_ _)m
--
某T:我喜欢你>/////<
:You gonna try harder...╮(╯_╰)╭
某T:啥?试着硬一点>///<(羞)
:是叫你再努力一点啦<(# ̄皿 ̄)╮☆(__ __||)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.201.234
1F:推 scars:读他firstChild的nodeValue? 01/09 01:54
2F:→ terrylchen:我把值读出来了,可是逻辑有点奇怪...似乎是我节点算错 01/09 02:05
※ 编辑: terrylchen 来自: 59.105.201.234 (01/09 02:21)