GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ขออนุญาตถามปัญหา 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 ตรงนี้ยังไงและครับ ใครทราบช่วยชี้แนะด้วยเถิอครับ ขอบพระคุณมากครับ
28 ส.ค. 2552 4 2,278

ก็คงไม่แปลกละครับ สำหรับการใช้ฟังก์ชั่นตามมาตรฐานบราวเซอร์ เมื่อใดที่ XML ไม่ถูกต้อง ฟังก์ชั่นย่อมอ่านค่าไม่ได้ มีตัวเลือก 2 ตัวที่เป็นไปได้

1. ถ้า XML เป็นของตัว้เอง ทางเลือกที่ดีที่สุดคือทำให้มันถูกต้องซะ Javascript มันก็จะทำงานได้เอง

2. ถ้า XML นำมาจากที่อื่น หลีกเลี่ยงได้ก็ควรหลีกครับ จะเป็นปัญหาเปล่าๆ แต่ถ้ายังจำเป็นต้องใช้ ก็คงต้อง เขียนฟังก์ชั่นเพื่ออ่านค่าด้วยตัวเองครับ ถ้าบน Javascript ก็ลองใช้ฟังก์ชั่นเกี่ยวกับ STring  เพื่อแยกค่าออกด้วยตัวเอง เช่นฟังก์ชั่นเกี่ยวกับ RegEXP หรือถ้าเป็นไปได้ ก็หันมาอ่าน XML ด้วย PHP+Ajax ครับ ตัวอย่างที่พอดัดแปลงได้ก็ RSS Ajax ครับ
#1

แบบนี้ได้หรือป่าวครับ แล้วถ้าเราเอา nextSibling เข้ามาช่วยเช็ค node ได้หรือป่าวครับ ประมาณว่า  ชี้ไปที่ node ก่อนถึงตัว node ที่มีปัญหา แล้วเช็คว่า มี node <inside> ใน node ถัดไปหรือไม่ ถ้ามีก็รับค่า ถ้าไม่มีก็ข้ามการทำงานของ node นี้ไป อะไร ประมาณนี้ แต่ผมเขียน เงื่อนไขการใช้ nextSibling ไม่เป็นครับ ปกติไม่เคยใช้ตัวนี้เลยครับ รบกวนชี้แนะด้วยครับ
#2

ลองสิครับ

แต่โดยทั่วไปแล้ว XML ที่ไม่ถูกต้อง มันก็น่าจะอ่านไม่ได้ครับ... หรืออ่านได้ก็แค่บาง Browser
#3

ลองเปลี่ยนวิธีวนลูปไปใช้ do..while ดูครับ อาจจะได้

#4
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^