كيف يمكنني اكتشاف عنصر الطفل من أحد الوالدين المتغير في 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