Eri*_*air 2 xml apache-flex namespaces actionscript-3
为什么下面循环中的跟踪会在false每次迭代时返回,即使有8个可能值中有6个命名的节点??? 这只有在我有一个命名空间时才会发生.有没有其他方法来检查节点值???
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private namespace ltrs = "letters";
use namespace ltrs;
private var myArray:Array = ["a","b","c","d","e","f","g","h"];
private function checkXML():void
{
for each (var p:String in myArray)
{
trace(myXML.hasOwnProperty(p).toString()); // returns false;
}
}
]]>
</mx:Script>
<mx:XML id="myXML">
<root xmlns="letters">
<a>true</a>
<b>true</b>
<c>true</c>
<e>true</e>
<f>true</f>
<g>true</g>
</root>
</mx:XML>
<mx:Button click="checkXML();" />
</mx:Application>
Run Code Online (Sandbox Code Playgroud)
方法hasOwnProperty不适用于XML节点.我相信这是E4X规范.但是,您可以随时询问具有E4X的节点,即使它不在那里,只看到您回来的XMLList的长度.像这样:
trace(myXML[p].length());
Run Code Online (Sandbox Code Playgroud)
编辑:如下所述,我对hasOwnProperty位错了.它确实与XML一起使用,它是一个导致问题的命名空间问题.您可以使用这个方便的代码段确保您的XML使用正确的命名空间:
if (myXML.namespace("") != undefined) {
default xml namespace = myXML.namespace("");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2260 次 |
| 最近记录: |