كيف يمكنني اكتشاف عنصر الطفل من أحد الوالدين المتغير في E4X (Flex 3، على وجه التحديد)؟
-
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
يمكنك حذف! = جزء غير محدد، لكنني سأتركها هناك للحصول على قابلية القراءة.