xml - 如何检查 Flex/AS3 中是否存在 XML 节点?

标签 xml apache-flex actionscript-3 namespaces

为什么下面循环中的跟踪每次迭代都会返回 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>

最佳答案

方法 hasOwnProperty 不适用于 XML 节点。我相信这是 E4X 规范。但是,即使 E4X 不存在,您也可以随时请求该节点,然后查看返回的 XMLList 的长度。就像这样:

trace(myXML[p].length());

编辑: 如下所述,我对 hasOwnProperty 位的看法是错误的。它确实可以与 XML 一起使用,并且是一个命名空间问题导致了您的问题。您可以使用以下方便的代码片段来确保您的 XML 使用正确的命名空间:

if (myXML.namespace("") != undefined) {
    default xml namespace = myXML.namespace("");
}

关于xml - 如何检查 Flex/AS3 中是否存在 XML 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050363/

相关文章:

actionscript-3 - 从SoundChannel对象AS3 Flash保存声音

actionscript-3 - Flash CS3 + AS 3.0 静音和取消静音舞台音量

java - 如何使用 Java 按顺序读取相同的标记名值

actionscript-3 - Flex播放一系列声音文件

xml - 在 ruby​​ 中写入 XML

apache-flex - 在 Flash Player 中播放来自 ByteArray 的 FLV

java - 从 dv 摄像机进行实时 RTMP 流传输的最佳方式

actionscript-3 - AS3 链接到网页

xml 拉解析器 Assets xml

Android:如何在不保持宽高比的情况下缩放图像以填充 LinearLayout 的背景?