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 Traverse Node Tree


การข้ามหมายถึงการวนซ้ำหรือเดินทางข้ามโหนดทรี


ข้ามต้นไม้โหนด

บ่อยครั้งที่คุณต้องการวนซ้ำเอกสาร XML ตัวอย่างเช่น เมื่อคุณต้องการแยกค่าของแต่ละองค์ประกอบ

นี้เรียกว่า "การข้ามทรีโหนด"

ตัวอย่างด้านล่างจะวนซ้ำในโหนดย่อยทั้งหมดของ <book> และแสดงชื่อและค่าของโหนดเหล่านี้:

ตัวอย่าง

<!DOCTYPE html>
<html>
<body>

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

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

เอาท์พุท:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

ตัวอย่างอธิบาย:

  1. โหลดสตริง XML ลงใน xmlDoc
  2. รับโหนดย่อยขององค์ประกอบรูท
  3. สำหรับแต่ละโหนดย่อย ให้ส่งออกชื่อโหนดและค่าโหนดของโหนดข้อความ


ความแตกต่างของเบราว์เซอร์ใน DOM Parsing

เบราว์เซอร์ที่ทันสมัยทั้งหมดรองรับข้อกำหนด W3C DOM

อย่างไรก็ตาม มีความแตกต่างบางประการระหว่างเบราว์เซอร์ ความแตกต่างที่สำคัญประการหนึ่งคือ:

  • วิธีจัดการกับช่องว่างสีขาวและบรรทัดใหม่

DOM - ช่องว่างสีขาวและบรรทัดใหม่

XML มักจะมีบรรทัดใหม่หรืออักขระช่องว่างระหว่างโหนด กรณีนี้มักเกิดขึ้นเมื่อแก้ไขเอกสารโดยโปรแกรมแก้ไขง่ายๆ เช่น Notepad

ตัวอย่างต่อไปนี้ (แก้ไขโดย Notepad) มี CR/LF (บรรทัดใหม่) ระหว่างแต่ละบรรทัดและช่องว่างสองช่องด้านหน้าโหนดย่อยแต่ละโหนด:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 และรุ่นก่อนหน้าจะไม่ถือว่าช่องว่างสีขาวหรือบรรทัดใหม่เป็นโหนดข้อความ ในขณะที่เบราว์เซอร์อื่นทำ

ตัวอย่างต่อไปนี้จะแสดงผลจำนวนโหนดย่อยที่องค์ประกอบรูท (ของbooks.xml ) มี IE9 และรุ่นก่อนหน้าจะส่งออกโหนดย่อย 4 โหนด ในขณะที่ IE10 และเวอร์ชันที่ใหม่กว่า และเบราว์เซอร์อื่นๆ จะส่งออกโหนดย่อย 9 โหนด:

ตัวอย่าง

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - แยกวิเคราะห์ข้อมูลอักขระ

ตัวแยกวิเคราะห์ XML มักจะแยกวิเคราะห์ข้อความทั้งหมดในเอกสาร XML

เมื่อองค์ประกอบ XML ถูกแยกวิเคราะห์ ข้อความระหว่างแท็ก XML จะถูกแยกวิเคราะห์ด้วย:

<message>This text is also parsed</message>

parser ทำเช่นนี้เนื่องจากองค์ประกอบ XML สามารถมีองค์ประกอบอื่นๆ ได้ ดังในตัวอย่างนี้ โดยที่องค์ประกอบ <name> มีองค์ประกอบอื่นๆ อีกสององค์ประกอบ (ตัวแรกและตัวสุดท้าย):

<name><first>Bill</first><last>Gates</last></name>

และ parser จะแบ่งออกเป็นองค์ประกอบย่อยดังนี้:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Parsed Character Data (PCDATA) เป็นคำที่ใช้เกี่ยวกับข้อมูลข้อความที่จะแยกวิเคราะห์โดย XML parser


CDATA - (ไม่แยกวิเคราะห์) ข้อมูลอักขระ

คำว่า CDATA ใช้เกี่ยวกับข้อมูลข้อความที่ไม่ควรแยกวิเคราะห์โดยตัวแยกวิเคราะห์ XML

อักขระเช่น "<" และ "&" ​​เป็นสิ่งผิดกฎหมายในองค์ประกอบ XML

"<" จะสร้างข้อผิดพลาดเนื่องจาก parser ตีความว่าเป็นจุดเริ่มต้นขององค์ประกอบใหม่

"&" จะสร้างข้อผิดพลาดเนื่องจาก parser ตีความว่าเป็นจุดเริ่มต้นของเอนทิตีอักขระ

ข้อความบางข้อความ เช่น โค้ด JavaScript มีอักขระ "<" หรือ "&" จำนวนมาก เพื่อหลีกเลี่ยงข้อผิดพลาด รหัสสคริปต์สามารถกำหนดเป็น CDATA

ทุกอย่างภายในส่วน CDATA จะถูกละเว้นโดย parser

ส่วน CDATA เริ่มต้นด้วย " <![CDATA[ " และลงท้ายด้วย " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

ในตัวอย่างข้างต้น parser จะละเว้นทุกอย่างในส่วน CDATA

หมายเหตุเกี่ยวกับส่วน CDATA:

ส่วน CDATA ต้องไม่มีสตริง "]]>" ไม่อนุญาตให้ใช้ส่วน CDATA ที่ซ้อนกัน

"]]>" ที่ทำเครื่องหมายจุดสิ้นสุดของส่วน CDATA ต้องไม่มีการเว้นวรรคหรือขึ้นบรรทัดใหม่