XML DOM ความแตกต่างบราวเซอร์

บราวเซอร์ต่างๆ จัดการตำแหน่งของตัวอักษรว่างใน XML DOM ต่างๆ

ตัวอย่าง

ตัวอย่างด้านล่างใช้แฟ้ม XML books.xml

ฟังก์ชัน loadXMLDoc()ที่ตั้งอยู่ด้านนอก JavaScript ใช้โหลดแฟ้ม XML

แสดงความยาวของตำแหน่งสาย
ตัวอย่างนี้แสดงความยาวของตำแหน่งสาย
ละเลยตัวองค์ประกอบข้อความว่างระหว่าง
ตัวอย่างนี้ตรวจสอบตำแหน่ง nodeType และจะจัดการกับตำแหน่งสาขาเท่านั้น

ความแตกต่างระหว่างบราวเซอร์ในการแจกแบ่ง DOM

บราวเซอร์ทุกตัวในยุคปัจจุบันสนับสนุนนวมาตรฐาน W3C DOM

อย่างไรก็ตาม มีความแตกต่างระหว่างบราวเซอร์ต่างๆ สำคัญสองจุด

  • วิธีการโหลด XML
  • วิธีการจัดการช่องว่างและช่องว่างแบบ Enter

ใน “การแจกแบ่ง XML DOM” บทบาทนี้ ได้มีการอธิบายถึงวิธีการโหลด XML ต่างๆ

ในบทบาทนี้ เราจะเล่าถึงวิธีการจัดการช่องว่างและช่องว่างแบบ Enter ต่างๆ

DOM - ช่องว่างและช่องว่างแบบ Enter

XML มักมีจุดของการหยุดตัวหรือช่องว่างระหว่างตำแหน่งของตัวอักษรสาระ ซึ่งเป็นสถานการณ์ที่เกิดขึ้นบ่อยครั้งเมื่อใช้บรรณาธิการที่เรียบเรียงง่าย (เช่น Notepad)

ตัวอย่างด้านล่าง (แก้ไขด้ด้วย Notepad) มี CR/LF ระหว่างแถวและมีออกเปล่าสองหลายเรืองก่อนหน้าทุกตามแม่ขึ้น

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Firefox และบราวเซอร์บางตัวอื่นจะจัดการความว่างเปล่าหรือช่องว่างแบบ Enter แบบ Line Feed ในตำแหน่งของตัวอักษรสาระ ในขณะที่ Internet Explorer จะไม่ทำเช่นนั้น

บทความใต้นี้แสดงให้เห็นจำนวนตัวองค์ประกอบลูกที่มีในตัวองค์ประกอบราก (books.xml):

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Number of child nodes: " + x.length);

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

  • ด้วยการใช้ loadXMLDoc() ใส่ "books.xml" โหลด xmlDoc
  • เรียกมายอดตัวองค์ประกอบลูกของตัวองค์ประกอบราก
  • ออกมายอดตัวองค์ประกอบลูก

ผลที่ได้ขึ้นอยู่กับบราวเซอร์ที่ใช้ Firefox ออกมา 9 และ IE ออกมา 4

TIY

ละเลยตัวองค์ประกอบข้อความว่างระหว่าง

ถ้าต้องการละเลยตัวองค์ประกอบข้อความว่างระหว่างตัวองค์ประกอบ ต้องตรวจสอบประเภทตัวองค์ประกอบ ประเภทตัวองค์ประกอบของตัวองค์ประกอบคือ 1:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// กระทำเพียงตัวองค์ประกอบ 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

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

  • ด้วยการใช้ loadXMLDoc() ใส่ "books.xml" โหลด xmlDoc
  • เรียกมายอดตัวองค์ประกอบลูกของตัวองค์ประกอบราก
  • ตรวจสอบประเภทตัวองค์ประกอบของทุกตัวองค์ประกอบลูก ถ้าประเภทตัวองค์ประกอบคือ "1" แล้ว มันคือตัวองค์ประกอบ

TIY (ง่าย) หรือ TIY (เต็ม)