Проверьте значение атрибута XML - PullRequest
0 голосов
/ 20 мая 2011

Не уверен, как я проверю, чтобы увидеть, равно ли значение атрибута узлов "действие" "левому".Мой XML выглядит следующим образом:

    <track timestamp="18/05/2011 13:21:49-0400" id="3" action="track">
               <coordinates> test 1</coordinates>
    </track>
    <track timestamp="18/05/2011 13:21:49-0400" id="3" action="track">
               <coordinates> test 1</coordinates>
    </track>
    <track timestamp="18/05/2011 13:21:49-0400" id="3" action="left">
                <coordinates> test 1</coordinates>
    </track>
    <track timestamp="18/05/2011 13:21:49-0400" id="3" action="track">
        <coordinates> test 1</coordinates>
    </track>

Полагаю, мне нужно перебрать данные XML и проверить, верно ли это, запустить мою функцию.Это то, что я до сих пор:

var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("get_data.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

               function processXML(e:Event):void {

            myXML = new XML(e.target.data);

                            for (var i:int = 0; i<myXML.*.length(); i++){
                                 if (myXML.tracking[i].action == "left")
                                    {
                                         start_animation();
                                    }
                            };
        }

1 Ответ

2 голосов
/ 20 мая 2011

Вы можете просто выбрать все узлы с определенным значением, например так:

node.(@attribute == "value")

В качестве примера, это будет выводить только те узлы, где side установлено как "left":

var xml:XML = 
<list>
    <node side="left">hi</node>
    <node side="left">there</node>
    <node side="right">marty</node>
</list>;

trace(xml.node.(@side == "left"));

Выход:

<node side="left">hi</node>
<node side="left">there</node>

Вы можете назначить это XMLList следующим образом:

var list:XMLList = xml.node.(@side == "left");

А затем выполните итерацию, как обычно:

var i:XML;
for each(i in list)
{
    trace(i);
}

В ответ на ваш комментарий вопрос:

Вы можете использовать свойство length(), чтобы определить, сколько узлов было найдено, а их сторона установлена ​​слева, например:

var xml:XML = 
<list>
    <node side="left">hi</node>
    <node side="left">there</node>
    <node side="right">marty</node>
</list>;

var list:XMLList = xml.node.(@side == "left");

// check if a node was found
if(list.length() > 0)
{
    doStuff();
}

function doStuff():void
{
    trace("a node had its side set as left");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...