1

我正在做一个 Flash 项目,在其中我试图从这个 xml 树中检索信息,使用 for 循环:

<game playGame="true" name="peopleNames" id="1">
      <category publish="pubTrue" categoryName="guys" categoryNumber="1">
        <word wordName="ross"/>
        <word wordName="chandler"/>
        <word wordName="joey"/>
      </category>
    <category publish="pubTrue" categoryName="girls" categoryNumber="2">
        <word wordName="rachel"/>
        <word wordName="monica"/>
        <word wordName="phoebe"/>
    </category>
</game>

我写了这个查询来检索数据:

var insQuery4b:String = xmlData.game.(@id=='1').category.(@categoryNumber=='1').(@publish=='pubTrue').word.@wordName[0];

但我想在循环中使用它,所以对于这个查询中的数字 (1, 0),我将使用循环的索引(例如 i)。我写了不同版本的查询,其中之一是:

var i:Number = 2;
var insQuery4a:String = xmlData.game.((@id=="'") + i + ("'")).category.((@categoryNumber=="'") + i + ("'")).(@publish=='pubTrue').word.@wordName[0];

但它们都不起作用......对查询语法有任何建议吗?谢谢。

4

2 回答 2

0

首先xml总是从根节点开始,所以这里你不必包含游戏节点,你只需要做xmlData.(@id=='1')...

所以第一个查询是:

var insQuery4b:String = xmlData.(@id=='1').category.(@categoryNumber=='1').(@publish=='pubTrue').word.@wordName[0];

对于第二个查询,您不必在变量 i 周围添加引号,您希望将其转换iString用于比较的toString函数。此外,如果iint使用int类型而不是Number 您的第二个示例可能是:

var i:int = 2;
var insQuery4a:String = xmlData.(@id==i.toString()).category.(@categoryNumber==i.toString()).(@publish=='pubTrue').word.@wordName[0];

现场示例: http ://wonderfl.net/c/ltN2

PS 它也可以在不强制转换为 String 的情况下工作,因为玩家会隐式执行此操作,但制作显式转换类型很好。

于 2012-10-18T11:36:23.697 回答
0

语法比这更容易,你不需要搞乱那些花哨的引号......只需使用:

var i:uint = 2;
var insQuery4b:String = xmlData.(@id==1).category.(@categoryNumber==i).(@publish=='pubTrue').word.@wordName[0];

trace(insQuery4b);
//output: rachel


//the loop (for example)
var l:uint = xmlData.(@id==1).category.length();

for(i=1; i<=l ;i++)
    trace(xmlData.(@id==1).category.(@categoryNumber==i).(@publish=='pubTrue').word.@wordName[0]);

//ouput: 
//ross
///rachel

编辑:

Patrick 是对的,您不需要将game节点与您展示给我们的 XML 数据一起使用。通常 XML 数据有一个父节点<xml>,像这样:

<xml>
  <game ... >
     rest of XML tree here
  </game>
</xml>

在这种情况下,您需要xmlData.game跳转到游戏节点。

于 2012-10-18T11:37:32.210 回答