Как я могу обнаружить дочерний элемент родительской переменной в E4X (в частности, Flex 3)?

StackOverflow https://stackoverflow.com/questions/1154916

  •  18-09-2019
  •  | 
  •  

Вопрос

У меня есть XML, который выглядит так:

<question>
    <type_elt>
        <opt_out_flag />
    </type_elt>
</question>

type_elt не является именем элемента;может быть <single>, <multiple> или что-то еще, определяемое во время выполнения.Как, учитывая это, я могу обнаружить присутствие opt_out_flag элемент?

Я попробовал это (где xml относится к question элемент):

if (xml.*.opt_out_flag) {
    do_something();
}

но даже в случаях без opt_out_flag приведенное выше выражение возвращает true.Очевидно, я что-то упускаю, но что именно?

Это было полезно?

Решение

Я верю, что ты хочешь использовать xml.*.hasOwnProperty('opt_out_flag') а не то, что вы сейчас используете.

Другие советы

Попробуй это

xml..opt_out_flag

Он будет искать все вхождения

Можете ли вы быть уверены, что <opt_out_flag/> всегда будет в первом дочернем элементе <question> элемент?Если да, то должно работать что-то вроде следующего:

(отказ от ответственности:Я знаю, что это работает с атрибутами, но не знаю, будет ли это работать с дочерними элементами)

if( "opt_out_flag" in xml.children()[0] ) {
    doSomething();
}

Можете ли вы использовать метод потомков (который рекурсивно спускается по дереву), чтобы найти тег?

var optOutNodes:XMLList = xml.descendants("opt_out_flag");

if(optOutNodes.length())
{
   //do code here
}

Надеюсь, это то, что вы ищете.

Вы можете использовать

var optOut:Boolean = xml..opt_out_flag != undefined

вы можете опустить неопределенную часть !=, но я бы оставил ее там для удобства чтения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top