XML Tutorial

XML หน้าแรก บทนำ XML XML วิธีใช้งาน XML Tree ไวยากรณ์ XML องค์ประกอบ XML คุณสมบัติ XML XML เนมสเปซ จอแสดงผล XML XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink เครื่องมือตรวจสอบ XML XML DTD XML Schema XML Server ตัวอย่าง XML แบบทดสอบ XML ใบรับรอง XML

XML AJAX

บทนำ AJAX AJAX XMLHttp คำขอ AJAX การตอบสนอง AJAX ไฟล์ AJAX XML AJAX PHP AJAX ASP ฐานข้อมูล AJAX แอปพลิเคชัน AJAX ตัวอย่าง AJAX

XML DOM

บทนำ DOM โหนด DOM การเข้าถึง DOM ข้อมูลโหนด DOM รายการโหนด DOM DOM Traversing การนำทาง DOM DOM รับค่า DOM เปลี่ยนโหนด DOM ลบโหนด DOM แทนที่โหนด DOM สร้างโหนด DOM เพิ่มโหนด DOM โคลนโหนด ตัวอย่าง DOM

บทช่วย สอนXPath

บทนำ XPath โหนด XPath ไวยากรณ์ XPath แกน XPath ตัวดำเนินการ XPath ตัวอย่าง XPath

กวดวิชาXSLT

บทนำ XSLT ภาษา XSL การแปลง XSLT XSLT <แม่แบบ> XSLT <ค่าของ> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <เลือก> ใช้ XSLT XSLT บนไคลเอนต์ XSLT บนเซิร์ฟเวอร์ XSLT แก้ไข XML ตัวอย่าง XSLT

กวดวิชาXQuery

บทนำ XQuery ตัวอย่าง XQuery XQuery FLWOR XQuery HTML ข้อกำหนด XQuery ไวยากรณ์ XQuery XQuery เพิ่ม XQuery Select ฟังก์ชัน XQuery

XML DTD

บทนำ DTD บล็อกตัวต่อ DTD องค์ประกอบ DTD คุณสมบัติ DTD องค์ประกอบ DTD เทียบกับ Attr หน่วยงาน DTD ตัวอย่าง DTD

ส คีมา XSD

บทนำ XSD XSD วิธีการ XSD <schema> องค์ประกอบ XSD แอตทริบิวต์ XSD ข้อจำกัด XSD

XSD Complex

องค์ประกอบ XSD XSD ว่างเปล่า องค์ประกอบ XSD เท่านั้น XSD Text เท่านั้น XSD ผสม ตัวชี้วัด XSD XSD <ใด ๆ> XSD <anyAttribute> การทดแทน XSD XSD ตัวอย่าง

ข้อมูลXSD

XSD สตริง วันที่ XSD XSD ตัวเลข XSD เบ็ดเตล็ด ข้อมูลอ้างอิง XSD

บริการเว็บ

XML Services XML WSDL XML SOAP XML RDF XML RSS

อ้างอิง

ประเภทโหนด DOM โหนด DOM DOM NodeList DOM NamedNodeMap เอกสาร DOM องค์ประกอบ DOM แอตทริบิวต์ DOM ข้อความ DOM DOM CDATA ความคิดเห็นของ DOM DOM XMLHttpRequest DOM Parser องค์ประกอบ XSLT ฟังก์ชัน XSLT/XPath

XML DOM - การนำทางโหนด


โหนดสามารถนำทางได้โดยใช้ความสัมพันธ์ของโหนด

×

Header


การนำทางโหนด DOM

การเข้าถึงโหนดในแผนผังโหนดผ่านความสัมพันธ์ระหว่างโหนด มักเรียกว่า "การนำทางโหนด"

ใน XML DOM ความสัมพันธ์ของโหนดถูกกำหนดเป็นคุณสมบัติของโหนด:

  • parentNode
  • ลูกโหนด
  • ลูกคนแรก
  • ลูกคนสุดท้อง
  • ต่อไปพี่น้อง
  • ก่อนหน้าพี่น้อง

รูปภาพต่อไปนี้แสดงส่วนหนึ่งของโหนดทรีและความสัมพันธ์ระหว่างโหนดใน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. รับ <หนังสือ> องค์ประกอบแรก
  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( node ) แทนโหนด คุณสมบัติ .nextSibling

รหัสอธิบาย:

โหนดองค์ประกอบเป็นประเภท 1 หากโหนดพี่น้องไม่ใช่โหนดองค์ประกอบ โหนดจะย้ายไปยังโหนดถัดไปจนกว่าจะพบโหนดองค์ประกอบ ด้วยวิธีนี้ ผลลัพธ์จะเหมือนกันทั้งใน Internet Explorer และ Firefox


รับองค์ประกอบลูกคนแรก

รหัสต่อไปนี้แสดงโหนดองค์ประกอบแรกของ <หนังสือ> แรก:

ตัวอย่าง

<!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() และฟังก์ชันที่กำหนดเองเพื่อรับโหนดพี่น้องถัดไปของโหนด


ตัวอย่างนี้ใช้เมธอด PreviousSibling() และฟังก์ชันที่กำหนดเองเพื่อรับโหนดพี่น้องก่อนหน้าของโหนด