我在检索XMLList时遇到了问题,我不明白为什么。
我有一个运行正常的应用程序。它使用两个名为division.xml和store.xml的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结构
division.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>store.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>发布于 2010-04-14 16:40:02
在这一行代码中:
var node:XMLList = storeData.stores.(@name==HomePageData.instance.divisionName).store.(odeis == HomePageData.instance.storeCodeOdeis)您正在寻找商店节点的name属性。它不会出现在XML示例中。您可能会在进入存储子节点之前过滤所有结果。
如果这不是您的问题,请发布一个更健壮的storeData变量示例。
我复制/粘贴了您的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>据我所知,您没有任何可能导致该错误的问题。您确定错误来自那里而不是其他代码行吗?
https://stackoverflow.com/questions/2639109
复制相似问题