0

我在检索 XMLList 时遇到问题,我不明白为什么。

我有一个运行正常的应用程序。它使用了两个 xml 文件中的一些数据,分别是 division.xml 和 store.xml。我注意到我在 division.xml 中有一些数据应该在 store.xml 中,所以我将数据从一个文件复制/粘贴到另一个文件。这是我复制的数据:

<stores name="Japan" division="C300">   
    <store>
        <odeis>101</odeis>
        <name></name>
        <password></password>
        <currency></currency>
        <currSymbol></currSymbol>
    </store>    
    <store>
        <odeis>102</odeis>
        <name></name>
        <password></password>
        <currency></currency>
        <currSymbol></currSymbol>
    </store>
</stores>

在应用程序中,我列出了所有 odeis 代码,我需要检索与所选 odeis 代码对应的块存储。

在将数据移动到 store.xml 之前,这是我检索块的方式:

var node:XMLList = divisionData.division.(@name==HomePageData.instance.divisionName).stores.store.(odeis == HomePageData.instance.storeCodeOdeis)

这是我将数据复制到 store.xml 后检索它的方式:

var node:XMLList = storeData.stores.(@name==HomePageData.instance.divisionName).store.(odeis == HomePageData.instance.storeCodeOdeis)

我目前收到以下错误:

ReferenceError: Error #1065: The variable odeis is not defined.

谁能启发我?因为我真的不知道为什么它不起作用......

感谢您提供的任何提示。

问候,BS_C3


Division.xml 和 store.xml 的完整 xml 结构

师.xml:

<data>
    <division name="Europe">
    </division>
    <division name="Japan">
        <stores>
            <store> 
                <odeis>101</odeis>
                <name> </name>
                <password></password>
                <currency></currency>
                <currSymbol></currSymbol>
            </store>
            <store>
                <odeis>031</odeis>
                <name></name>
                <password></password>
                <currency></currency>
                <currSymbol></currSymbol>
            </store>
            <store>
                <odeis>032</odeis>
                <name></name>
                <password></password>
                <currency></currency>
                <currSymbol></currSymbol>
            </store>
        </stores> 
        <fingerSize>
            .
            .
            . 
        </fingerSize>
        <clarities> 
            .
            .
            .
        </clarities>
        <colors>
            .
            .
            .
        </colors>
    </division> 
</data>

存储.xml:

<data>
    <stores name="Europe" division="C100">
        <store>
            <odeis></odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store>  
        <store>
            <odeis></odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store>
        <store>
            <odeis></odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store> 
    </stores>
    <stores name="Japan" division="C300">   
        <store>
            <odeis>101</odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store>
        <store>
            <odeis>031</odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store>
        <store>
            <odeis>032</odeis>
            <name></name>
            <password></password>
            <currency></currency>
            <currSymbol></currSymbol>
        </store>
    </stores>
</data>
4

1 回答 1

2

在这行代码中:

var node:XMLList = storeData.stores.(@name==HomePageData.instance.divisionName).store.(odeis == HomePageData.instance.storeCodeOdeis)

您正在寻找商店节点的名称属性。这没有出现在您的 XML 示例中。在您进入商店子节点之前,您可能已经过滤了所有结果。

如果这不是您的问题,请发布更强大的 storeData xml 变量示例。


我复制/粘贴并几乎没有对您的 E4X 查询进行任何更改,也没有任何问题。这运行得很好:

<?xml version="1.0"?>
<!-- Simple example to demonstrate the ComboBox control. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
    <mx:Script>
        <![CDATA[
            public var storeData:XML = new XML(
                <data>
                    <stores name="Europe" division="C100">
                        <store>
                            <odeis></odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store>  
                        <store>
                            <odeis></odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store>
                        <store>
                            <odeis></odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store> 
                    </stores>
                    <stores name="Japan" division="C300">   
                        <store>
                            <odeis>101</odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store>
                        <store>
                            <odeis>031</odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store>
                        <store>
                            <odeis>032</odeis>
                            <name></name>
                            <password></password>
                            <currency></currency>
                            <currSymbol></currSymbol>
                        </store>
                    </stores>
                </data>
            );

            public function init():void{
                trace(storeData.stores.(@name=="Japan").store.(odeis == "031"));    
            }           

        ]]>
    </mx:Script>
</mx:Application>

据我所知,没有任何问题会导致该错误。您确定错误来自那里而不是其他代码行吗?

于 2010-04-14T16:40:02.233 回答