ตอนแรกกะว่าจะเขียนวันเดียวกับเรื่อง Tree แต่ด้วยความขี้เกียจบวกกับเมื่อวานกะทำงานหลายๆ อย่างให้เสร็จเลยไม่ได้เขียน ยกยอดมาเขียนวันนี้แทน เรื่องนี้เป็นเรื่องที่สองที่ได้จากการทำ FeedReader แล้วทำให้รู้ว่า Flex มันไม่สามารถหาวิธีทำได้จากคู่มือที่มีให้ในเว็บ Adobe ต้องใช้ความสามารถในการใส่ keyword ให้ google เข้าช่วยอย่างมาก

เรื่อง ของเรื่องก็คือ xml ที่ Google ส่งมาใน Google Reader มีการใช้ namespace อยู่สามตัวในการแบ่ง tag ต่างๆคราวนี้พอได้รับข้อมูลมาแล้วจะเอามาอ่านใส่ตัวแปรโดยไม่มีการกำหนด namespace ให้มันปรากฏว่า Flex มันก็จะอ่านข้อมูลตัวนั้นออกมาเป็นตัวแปรแบบปกติไม่ได้เช่น

<?xml version="1.0"?>
<feed xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:media="http://search.yahoo.com/mrss/" xmlns="http://www.w3.org/2005/Atom">
<generator uri="http://www.google.com/reader">Google Reader</generator>
<id>tag:google.com,2005:reader/user/10757961596074723521/state/com.google/reading-list</id>
<title>แนท's reading list in Google Reader</title>
<gr:continuation>CLv69f7_nZUC</gr:continuation>
<link rel="self" href="http://www.google.com/reader/atom/"/>
  <author>
    <name>แนท</name>
  </author>
<updated>2008-08-21T08:07:03Z</updated>
<entry gr:crawl-timestamp-msec="1219306023740">
  <id gr:original-id="http://gizmodo.com/5039814/logitech-speed-force-wireless-is-first-racing-wheel-for-wii">tag:google.com,2005:reader/item/8c96bd9a8e5c1cb5</id>
  <category term="user/10757961596074723521/label/english" scheme="http://www.google.com/reader/" label="english"/>
  ....
  </id>
</entry>
</feed>

ขี้เกียจเอามาหมดยาว จะเห็นว่าแท๊กพิเศษอยู่เช่น gr:…. แต่อย่างไรก็ตามด้านบนมันก็ได้กำหนดไว้แล้วว่าอะไรคือ namespace default (xmlns ที่ไม่มี : บอกว่าใช้ namespace อะไรนำหน้านั่นแหละ) แต่ Flex มันดั้นไม่ฉลาดพอที่จะเลือกมาให้เอง สุดท้ายก็เลยต้องกำหนดให้มันหน่อยเป็น

default xml namespace = new Namespace('http://www.w3.org/2005/Atom')
//...flex code...
default xml namespace = null

โดยก่อนออกฟังก์ชั่นต้องเปลี่ยนกลับให้มันเป็น null ด้วยไม่งั้นอาจเจอ Error ที่คาดไม่ถึงได้ (จำไม่ได้แล้วว่า Error ไรขี้เกียจทำให้มันขึ้นมาซะด้วยสิ)
อืมหลังจากทำ FeedReader มาถึงตรงนี้ก็เริ่มคิดว่า ทำต่อไปเรื่อยๆ จะเจออะไรพิศดารอีกไหม(ซึ่งคาดว่าต้องเจออีกแน่นอน) อย่าง namespace ก็ไม่เคยคิดว่าจะต้องตั้งให้มันอย่างนี้ ตอนแรกนึกว่าจะใส่ให้กับตัวแปรที่เป็นตัวเก็บข้อมูล xml ธรรมดาๆ ซะอีก ไม่เป็นไร เดี๊ยวลองเล่นกับ sqlite ก็ได้รู้กัน

เขียนเมื่อ: August 21st, 2008 | หมวด: ภาษาเครื่องกล | แถก: ,, | อ้างอิง |

ทิ้งคำบ่น

XHTML: สามารถใช้แถกเหล่านี้ในการบ่น: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">