دروس XML

الصفحة الرئيسية لـ XML مقدمة XML كيفية استخدام XML شجرة XML بناء جملة XML عناصر XML سمات XML مساحات أسماء XML عرض XML طلب XML HttpRequest محلل XML XML DOM XML XPath XML XSLT XML XQuery XML XLink مدقق XML XML DTD مخطط XML خادم XML أمثلة XML مسابقة XML شهادة XML

XML AJAX

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

XML DOM

مقدمة حول DOM عقد DOM الوصول إلى DOM معلومات عقدة DOM قائمة عقدة DOM عبور DOM التنقل في DOM DOM احصل على القيم DOM تغيير العقد DOM إزالة العقد استبدل DOM Nodes DOM إنشاء العقد DOM أضف العقد عقد استنساخ DOM أمثلة DOM

دروس XPath

مقدمة XPath عقد XPath بناء جملة XPath محاور XPath مشغلي XPath أمثلة XPath

XSLT التعليمي

XSLT مقدمة لغات XSL تحويل XSLT XSLT <template> XSLT <قيمة> XSLT <للجميع> XSLT <ترتيب> XSLT <if> XSLT <اختر> XSLT تطبيق XSLT على العميل XSLT على الخادم XSLT تحرير XML أمثلة XSLT

XQuery تعليمي

XQuery مقدمة مثال XQuery XQuery FLWOR XQuery HTML شروط XQuery بناء جملة XQuery XQuery إضافة XQuery حدد وظائف XQuery

XML DTD

مقدمة DTD مكعبات بناء DTD عناصر DTD سمات DTD عناصر DTD مقابل Attr كيانات DTD أمثلة DTD

مخطط XSD

مقدمة XSD XSD كيف XSD <المخطط عناصر XSD سمات XSD قيود XSD

مجمع XSD

عناصر XSD XSD فارغ عناصر XSD فقط نص XSD فقط XSD مختلط مؤشرات XSD XSD <أي> XSD <أي سمة> تبديل XSD مثال XSD

بيانات XSD

سلسلة XSD تاريخ XSD XSD الرقمية XSD متفرقات مرجع XSD

خدمات الويب

خدمات XML XML WSDL صابون XML XML RDF XML RSS

مراجع

أنواع عقدة DOM عقدة DOM قائمة عقدة DOM DOM NamedNodeMap مستند DOM عنصر DOM سمة DOM نص DOM DOM CDATA تعليق DOM DOM XMLHttpRequest محلل DOM عناصر XSLT وظائف XSLT / XPath

XML DOM - تصفح العقد


يمكن التنقل بين العقد باستخدام علاقات العقد.

×

Header


التنقل في عُقد DOM

غالبًا ما يسمى الوصول إلى العقد في شجرة العقد عبر العلاقة بين العقد "عقد التنقل".

في XML DOM ، يتم تعريف علاقات العقد على أنها خصائص للعقد:

  • عقدة الأم
  • ChildNodes
  • أولا
  • الطفل الأخير
  • التالي
  • الشقيق السابق

توضح الصورة التالية جزءًا من شجرة العقدة والعلاقة بين العقد في books.xml :

شجرة العقدة


DOM - العقدة الأصل

تحتوي جميع العقد على عقدة أصلية واحدة بالضبط. ينتقل الكود التالي إلى العقدة الأصلية لـ <book>:

مثال

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}

شرح المثال:

  1. تحميل " books.xml " في xmlDoc
  2. احصل على أول عنصر <book>
  3. إخراج اسم العقدة للعقدة الأصل لـ "x"


تجنب العقد النصية الفارغة

سوف يتعامل Firefox وبعض المتصفحات الأخرى مع المسافات البيضاء الفارغة أو الأسطر الجديدة كعقد نصية ، بينما لن يقوم Internet Explorer بذلك.

يتسبب هذا في مشكلة عند استخدام الخصائص: firstChild ، lastChild ، nextSibling ، previousSibling.

لتجنب التنقل إلى عقد نصية فارغة (مسافات وأحرف سطر جديد بين عقد العناصر) ، نستخدم وظيفة تتحقق من نوع العقدة:

function get_nextSibling(n) {
    var y = n.nextSibling;
    while (y.nodeType! = 1) {
        y = y.nextSibling;
    }
    return y;
}

تسمح لك الوظيفة أعلاه باستخدام get_nextSibling ( عقدة ) بدلاً من عقدة الخاصية .nextSibling.

وأوضح الكود:

عقد العنصر هي من النوع 1. إذا لم تكن العقدة الشقيقة عقدة عنصر ، فإنها تنتقل إلى العقد التالية حتى يتم العثور على عقدة عنصر. بهذه الطريقة ، ستكون النتيجة هي نفسها في كل من Internet Explorer و Firefox.


احصل على العنصر الطفل الأول

يعرض الكود التالي العقدة الأولى للعنصر <book> الأول:

مثال

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

انتاج:

title

شرح المثال:

  1. تحميل " books.xml " في xmlDoc
  2. استخدم الدالة get_firstChild في أول عقدة عنصر <book> للحصول على العقدة الفرعية الأولى التي تمثل عقدة عنصر
  3. إخراج اسم العقدة للعقدة الفرعية الأولى التي هي عقدة عنصر

مزيد من الأمثلة


يستخدم هذا المثال طريقة lastChild () ودالة مخصصة للحصول على آخر عقدة تابعة للعقدة


يستخدم هذا المثال طريقة nextSibling () ودالة مخصصة للحصول على العقدة الشقيقة التالية للعقدة


يستخدم هذا المثال الطريقة السابقة ()Sibling ووظيفة مخصصة للحصول على العقدة الشقيقة السابقة للعقدة