ขออนุญาตถามปัญหา xml ครับ
ตอนนี้ผมมีปัญหาเกี่ยวกับการดึง xml ของเว็บชาวบ้านมาใช้งานครับ ปัญหามีอยู่ว่า สมมุตินะครับ
<?xml version="1.0" encoding="utf-8" ?>
<root>
<inside>ข้อมูลที่1</inside>
</root>
<root>
</inside> <----------- ตัวปัญหาครับ
</root>
<root>
<inside>ข้อมูลที่3</inside>
</root>
ส่วนตอนเรียกข้อมูลก็ทำปกตินะครับ ขออนุญาตเขียนลัดนิดหน่อยนครับ ประเดนคือผมจะดึงข้อมูลใน node <inside> ทั้งหมดนะครับก็วนลูปธรรมดาแบบนี้
for (var i = 0; i < 3; i++)
if( ) <----------- จะเขียนเงื่อนไขอะไรดักไว้ได้บ้างครับ
variable[i]=xml.getElementsByTagName('inside')[i].childNodes[0].nodeValue
else
variable[i]="";
ปัญหาอยู่ตรงนี้และครับ พอในลูปที่สองที่ต้องไปดึงข้อมูลในแท็กที่ผมเขียน error ไว้ พอรันบน ie มัน error เลยครับ คือประมาณว่าไม่สามารถแสดงข้อมูลทั้งหมดได้เลยครับ ถ้าจะให้ผมไปแก้ไฟล์ xml ก็ไม่ได้อีกมันเป็นของชาวบ้านครับ ผมก็เลยมีคำถามอยู่ว่า ผมสามารถเขียนเงื่อนไข [ if() ] หรืออะไรก็ตามแต่ดักได้มั้ยครับว่า ถ้า node ไหนไม่ครบหรือไม่สมบูรณ์ให้ตัวแปรเก็บค่าว่างปล่าวไว้แล้วไปทำลูปต่อไปเลย คือประเดนคือผมไม่รู้จะเขียนเงื่อนไขดัก error ตรงนี้ยังไงและครับ ใครทราบช่วยชี้แนะด้วยเถิอครับ ขอบพระคุณมากครับ
<?xml version="1.0" encoding="utf-8" ?>
<root>
<inside>ข้อมูลที่1</inside>
</root>
<root>
</inside> <----------- ตัวปัญหาครับ
</root>
<root>
<inside>ข้อมูลที่3</inside>
</root>
ส่วนตอนเรียกข้อมูลก็ทำปกตินะครับ ขออนุญาตเขียนลัดนิดหน่อยนครับ ประเดนคือผมจะดึงข้อมูลใน node <inside> ทั้งหมดนะครับก็วนลูปธรรมดาแบบนี้
for (var i = 0; i < 3; i++)
if( ) <----------- จะเขียนเงื่อนไขอะไรดักไว้ได้บ้างครับ
variable[i]=xml.getElementsByTagName('inside')[i].childNodes[0].nodeValue
else
variable[i]="";
ปัญหาอยู่ตรงนี้และครับ พอในลูปที่สองที่ต้องไปดึงข้อมูลในแท็กที่ผมเขียน error ไว้ พอรันบน ie มัน error เลยครับ คือประมาณว่าไม่สามารถแสดงข้อมูลทั้งหมดได้เลยครับ ถ้าจะให้ผมไปแก้ไฟล์ xml ก็ไม่ได้อีกมันเป็นของชาวบ้านครับ ผมก็เลยมีคำถามอยู่ว่า ผมสามารถเขียนเงื่อนไข [ if() ] หรืออะไรก็ตามแต่ดักได้มั้ยครับว่า ถ้า node ไหนไม่ครบหรือไม่สมบูรณ์ให้ตัวแปรเก็บค่าว่างปล่าวไว้แล้วไปทำลูปต่อไปเลย คือประเดนคือผมไม่รู้จะเขียนเงื่อนไขดัก error ตรงนี้ยังไงและครับ ใครทราบช่วยชี้แนะด้วยเถิอครับ ขอบพระคุณมากครับ
1. ถ้า XML เป็นของตัว้เอง ทางเลือกที่ดีที่สุดคือทำให้มันถูกต้องซะ Javascript มันก็จะทำงานได้เอง
2. ถ้า XML นำมาจากที่อื่น หลีกเลี่ยงได้ก็ควรหลีกครับ จะเป็นปัญหาเปล่าๆ แต่ถ้ายังจำเป็นต้องใช้ ก็คงต้อง เขียนฟังก์ชั่นเพื่ออ่านค่าด้วยตัวเองครับ ถ้าบน Javascript ก็ลองใช้ฟังก์ชั่นเกี่ยวกับ STring เพื่อแยกค่าออกด้วยตัวเอง เช่นฟังก์ชั่นเกี่ยวกับ RegEXP หรือถ้าเป็นไปได้ ก็หันมาอ่าน XML ด้วย PHP+Ajax ครับ ตัวอย่างที่พอดัดแปลงได้ก็ RSS Ajax ครับ
แต่โดยทั่วไปแล้ว XML ที่ไม่ถูกต้อง มันก็น่าจะอ่านไม่ได้ครับ... หรืออ่านได้ก็แค่บาง Browser
ลองเปลี่ยนวิธีวนลูปไปใช้ do..while ดูครับ อาจจะได้