XML กับ jQuery ความลงตัวที่หาที่ไหนไม่ได้
posted on 15 Dec 2007 14:35 by pommatt in javascriptXML กับ jQuery ความลงตัวที่หาที่ไหนไม่ได้
วันนี้จะมาขอพูดถึงเรื่องการทำงานของ jQuery กับ XML จริงๆ แล้วตัวของ Jquery สามารถทำงานกับรูปแบบเอกสารได้หลายชนิด คือ
1. HTML
2. XML
3. JSON
4. Script
ซึ่งผมมองว่าทุกตัว jQuery สามารถทำได้ดีพอๆกัน เลยว่าจะอธิบายให้หมด (ยกเว้น HTML) แต่เนื่องด้วย…. เวลาอันน้อยนิดของผม ขอเอาเป็นรูปแบบยอดฮิตก่อนละกัน นั่นก็คืออะไรน่าจะเดากันออก XML เพื่อนเลิฟไง ^_^
ซึ่งในการคืนค่าจาก Ajax บางครั้ง เราอาจจะต้องใช้งาน XML กันบ้าง แน่นอนว่า Javascript ตามปกติเราก็พอจะทำกันได้บ้าง แต่ว่ากว่าจะ อ่านกว่าจะไต่ node กว่าจะแปลงล่างกลับมาเป็น html โคดก็ปาไปเกือบ 100 บรรทัด ทีนี้ลองเปลี่ยนมาใช้ jQuery กันบ้าง ว่าจะง่ายกว่ายังไง
ในที่นี้ตัวอย่าง XML ที่ผมจะเอามาทดสอบด้วยคือ XML ที่เป็นรูปแบบ sitemap ที่ Google อณุญาติให้เราใช้ทำการ submit ละกันครับ
ไฟล์ sitemap.xml
http://www.domainsample.com/chemical
2007-11-21
weekly
0.5
http://www.domainsample.com/admin
2007-11-21
weekly
0.5
http://www.domainsample.com/articles
2007-11-21
weekly
0.5
http://www.domainsample.com/alternative-energy-sources
2007-11-21
weekly
0.5
http://www.domainsample.com/acne-chemical-peel-scar
2007-11-21
weekly
0.5
ซึ่งจาก XML ด้านบนผมจะลองเอา jQuery ไปอ่านออกมาไว้ในหน้าเอกสาร html
readsitemap.html
jQuery
$(function() {
$.get('data/sitemap.xml', function(xml) {
$(xml).find('url').each(function() {
var txt = $(this).find('loc').text();
$('
});
});
});
เอาล่ะทีนี้เราลองมาดูโคดทีละ บรรทัดกันเลย
ส่วนี้เป็นการเรียกไฟล์ xml ออกมาครับ ให้วิ่งไปให้ถูก path เป็นพอ เอากลับมาเป็น data เก็บไว้ในตัวแปร xml
$.get('data/sitemap.xml', function(xml)
ต่อมาเป็นการหาข้อมูลใน tag “url” ขึ้นมาวนลุปโดยใช้คำสั่ง each ซึ่งจากตรงนี้เราอาจจะเขียนแบบนีก็ได้ $(’url’, xml)……
$(xml).find('url').each(function() {
ต่อมาเป็นการไต่ node ต่อจาก url -> loc แล้วใช้คำสั้ง text() เอาค่าออกมา
var txt = $(this).find('loc').text();
สุดท้ายได้ค่ากลับมาแล้วเอามาเก็บลงใน li ก่อนที่จะไป append เข้าใน tag ที่มี id เป็น sitemap
$('
เป็นมั้ยครับง่ายโครตๆ และยังมีอีกครับ ถ้าต้องการหา attribute ก็แค่ใช้คำสั่ง get มันออกมาเช่น
$(this).find(’loc’).attr(’someattr’).text();
หรือถ้าจะหาค่าค่าตั้งแต่ element ที่ 0 ขึ้นไปก็ใช้
$(this).find(’loc:gt(0)’).text(); // กลับกันใช้ lt หาค่าน้อยกว่า
ง่ายมั้ยกับ jQuey วันนี้ ^_^
อ้างอิงจาก: http://www.jquerytips.com
edit @ 20 Dec 2007 07:53:20 by Pom & Ja
