قائمة العناصر DOM لـ XML

getElementsByTagName() و روش‌ها childNodes این ویژگی‌ها را استفاده می‌کنید، لیست گره‌ها را بازمی‌گردانید.

قائمة عناصر DOM

وقتی که از childNodes یا getElementsByTagName() هنگام استفاده از برخی از属性 یا روش‌ها، شیء NodeList بازمی‌گردانده می‌شود.

شیء NodeList لیستی از گره‌ها را نشان می‌دهد که ترتیب آن‌ها با ترتیب در XML مشابه است.

گره‌های لیست گره‌ها از طریق شماره‌های نشانه‌ای که از 0 شروع می‌شود قابل دسترسی هستند.

تصویر زیر نشان می‌دهد: books.xml لیست گره‌های عناصر <title>:

قائمة عناصر DOM

فرض کنید "books.xml" به عنوان یک متغیر xmlDoc بارگذاری شده باشد.

این کد فایل برگردان لیست گره‌های عناصر title در فایل "books.xml" را می‌دهد:

x = xmlDoc.getElementsByTagName("title");

بعد از اجرای عبارات بالا، x به یک شیء NodeList تبدیل می‌شود.

يتم إرجاع قطعة الكود التالية قائمة العقد (x) للنص من العنصر الأول <title>:

النموذج

var txt = x[0].childNodes[0].nodeValue;

جرب بنفسك

بعد تنفيذ الجملة المذكورة أعلاه، txt = "ياسر تتحدث عن الأكل".

طول قائمة العقد

عنصر NodeList سيبقى قيد التحديث الذاتي. إذا تم حذف أو إضافة عنصر، فإن القائمة ستحتاج إلى تحديث تلقائي.

قائمة العقد length الخاصية هي عدد العقد في القائمة.

هذا الكود يعود بعدد العناصر <title> في ملف "books.xml":

x = xmlDoc.getElementsByTagName('title').length;

بعد تنفيذ الجملة المذكورة أعلاه،x انه 5.

طول قائمة العقدات يمكن استخدامه لتدوير جميع العناصر في القائمة.

يستخدم الكود المذكور أعلاه length التحكم في الخاصيات لاستكشاف قائمة العناصر <title>:

النموذج

x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
    txt += (x[i].childNodes[0].nodeValue) + " ";
}

جرب بنفسك

توضيح المثال:

  1. افتراض books.xml تم تحميلها xmlDoc الوسط
  2. تعيين المتغير x لحفظ قائمة العقدات لجميع العناصر <title>
  3. الحصول على قيمة النص من العنصر <title>

قائمة الخاصيات DOM (خريطة العقدة المسمى)

عقدة العنصر attributes العقدة تعود بقائمة عقدات الخاصيات.

هذا يُدعى خريطة العقدة المسمى (named node map)، يشبه قائمة العقدات، ولكن لديه طرق وخصائص مختلفة.

قائمة الخاصيات ستبقى أحدث. إذا تم حذف أو إضافة خاصية، فإن القائمة ستحتاج إلى تحديث تلقائي.

هذا الكود يعود بقائمة عقدات الخاصيات من العنصر الأول <book> في ملف "books.xml":

x = xmlDoc.getElementsByTagName('book')[0].attributes;

بعد تنفيذ الكود المذكور أعلاه،x.length يساوي عدد الخاصيات، يمكن استخدام x.getNamedItem() يتم إرجاع عقدة الخاصية.

هذا الكود يحصل على قيمة الخاصية "category" لأول كتاب، بالإضافة إلى عدد الخاصيات:

النموذج

x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;

جرب بنفسك

توضيح المثال:

  1. افتراض books.xml تم تحميله إلى xmlDoc الوسط
  2. تعيين المتغير x لحفظ قائمة الخاصيات لكل علامة <book> الأولى
  3. الحصول على قيمة الخاصية "category" ومدى طول قائمة الخاصيات