我在检索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>
答案 0 :(得分:2)
在这行代码中:
var node:XMLList = storeData.stores.(@name==HomePageData.instance.divisionName).store.(odeis == HomePageData.instance.storeCodeOdeis)
您正在寻找商店节点的name属性。这不会出现在您的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>
据我所知,你没有任何问题导致该错误。你确定错误来自那里而不是其他一些代码吗?