ล่าสุดการพัฒนาเว็บบทเรียน
×

XML เกี่ยวกับการสอน

XML บ้าน XML บทนำ XML วิธีใช้ XML ต้นไม้ XML วากยสัมพันธ์ XML องค์ประกอบ XML แอตทริบิวต์ XML namespaces XML แสดง XML XSLT XML XPath XML XLink XML ตรวจสอบ XML DTD XML schema XML เซิร์ฟเวอร์ XML การประยุกต์ใช้งาน XML ตัวอย่าง XML ทดสอบ XML ใบรับรอง

XML DOM

DOM แนะนำ DOM โหนด DOM XMLHttpRequest DOM การเข้าถึง DOM ข้อมูลโหนด DOM รายการโหนด DOM ภายใน DOM การนำทาง DOM ได้รับค่า DOM Change โหนด DOM Remove โหนด DOM Replace โหนด DOM Create โหนด DOM Add โหนด DOM Clone โหนด DOM ตัวอย่าง

DOM การอ้างอิง

DOM ประเภทโหนด DOM ปม DOM NodeList DOM NamedNodeMap DOM เอกสาร DOM ธาตุ DOM คุณลักษณะ DOM ข้อความ DOM CDATA DOM คิดเห็น DOM XMLHttpRequest DOM parser

XML DTD

DTD แนะนำ DTD การก่อสร้างตึก DTD องค์ประกอบ DTD แอตทริบิวต์ DTD องค์ประกอบ VS attr DTD หน่วยงาน DTD ตัวอย่าง

XSD Schema

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

XSD ซับซ้อน

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

XSD Data

XSD เชือก XSD วันที่ XSD เป็นตัวเลข XSD อื่น ๆ XSD การอ้างอิง

Web บริการ

XML บริการ XML WSDL XML SOAP XML RDF XML RSS

 

XML DOM ทราเวิร์โหนด


traversing วิธีการวนลูปหรือผ่านการเดินทางข้ามต้นไม้โหนด


traversing ต้นไม้โหนด

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

นี้เรียกว่า "Traversing the node tree"

ตัวอย่างด้านล่าง loops ผ่านทุกโหนดลูกของ <หนังสือ> และแสดงชื่อและค่าของพวกเขา

ตัวอย่าง

<!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

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

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

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

DOM - ช่องว่างสีขาวและสายใหม่

XML มักจะมีเส้นใหม่หรือตัวอักษรพื้นที่สีขาวระหว่างโหนด นี้มักจะเป็นกรณีเมื่อเอกสารถูกแก้ไขโดยโปรแกรมแก้ไขง่ายๆเช่น Notepad

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

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

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

ตัวอย่างต่อไปนี้จะออกจำนวนของเด็กโหนดองค์ประกอบราก (of 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 - แยกวิเคราะห์ข้อมูลตัวอักษร

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

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

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

ตัวแยกวิเคราะห์นี้ไม่ได้เพราะองค์ประกอบ XML สามารถมีองค์ประกอบอื่น ๆ เช่นในตัวอย่างนี้ที่ <name> องค์ประกอบที่มีสององค์ประกอบอื่น ๆ (first and last) :

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

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

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

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


CDATA - (Unparsed) ข้อมูลตัวอักษร

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

ตัวอักษรเช่น "<" และ "&" ที่ผิดกฎหมายในองค์ประกอบ XML

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

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

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

ทุกอย่างภายในส่วน CDATA จะถูกละเว้นโดยตัวแยกวิเคราะห์ที่

ส่วน CDATA เริ่มต้นด้วย " <![CDATA[ " and ends with " ]]> " :

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

ในตัวอย่างข้างต้นทุกอย่างภายในส่วน CDATA จะถูกละเว้นโดยตัวแยกวิเคราะห์ที่

Notes on CDATA sections:

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

"]]>" ว่าจุดสิ้นสุดของส่วน CDATA ไม่สามารถมีช่องว่างหรือแบ่งบรรทัด