XPath หรือ XML Path Language เป็นหนึ่งในเทคโนโลยีภายใต้มาตรฐานของ W3C ที่ถูกออกแบบมาเพื่อการสอบถามข้อมูลในเอกสาร XML แม้ว่า XML จะมีโครงสร้างที่ชัดเจนและสะดวกในการจัดเก็บข้อมูล แต่การเข้าถึงข้อมูลเหล่านี้ไม่ได้ง่ายเสมอไปหากไม่มีเครื่องมือหรือภาษาที่เหมาะสม
XPath มีความสำคัญในการวิจัยและพัฒนาโปรแกรมที่ต้องใช้ข้อมูลจากเอกสาร XML ไม่ว่าจะเป็นการนำข้อมูลออกมาแสดง การทำ Transformation หรือแม้กระทั่งการตรวจสอบความถูกต้องของข้อมูลล้วนใช้ XPath ได้
XPath ใช้แนวคิดคล้ายกับการนำทางไฟล์ในระบบปฏิบัติการ เพียงแต่ในกรณีนี้เราจะใช้ในการนำทางในโครงสร้างของ XML ประกอบด้วยแนวคิดต่อไปนี้:
1. Node: เป็นหน่วยพื้นฐานใน XPath และ XML มีหลายประเภท เช่น Element, Attribute, Text, Comment เป็นต้น 2. Path Expression: นิพจน์ที่ใช้ในการระบุเส้นทาง เช่น `/bookstore/book` จะหมายถึงการเข้าถึงโหนด `book` ทั้งหมดใต้ `bookstore` 3. Predicates: เงื่อนไขที่ใช้กรองผลลัพธ์ เช่น `/bookstore/book[price>30]` จะเลือกเฉพาะหนังสือที่มีราคามากกว่า 30 4. Functions: XPath มีฟังก์ชันหลากหลายสำหรับการค้นหาและจัดการข้อมูล เช่น `count()`, `contains()`, และ `substring()`
สมมุติว่าเรามี XML ดังนี้:
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
1. การเลือก `title` ของหนังสือทั้งหมด:
/bookstore/book/title
ผลลัพธ์จะเป็นโหนด `title` ทั้งหมดที่อยู่ใน `bookstore`
2. การเลือก `title` ของหนังสือที่มี `price` มากกว่า `30`:
/bookstore/book[price>30]/title
ในกรณีนี้ ผลลัพธ์จะไม่มีข้อมูล เนื่องจากไม่มีหนังสือใดที่มีราคามากกว่า 30
3. การเลือกหนังสือที่มี `category` เป็น `children`:
/bookstore/book[@category='children']
ผลลัพธ์จะเป็นโหนด `book` ที่มีแอตทริบิวต์ `category` เท่ากับ `children`
XPath สามารถใช้ในหลากหลายโปรแกรม เช่นใน Java ผ่านการใช้ API เช่น `javax.xml.xpath.XPathFactory` ซึ่งทำให้การค้นหาและแก้ไขข้อมูลใน XML เป็นไปได้อย่างมีประสิทธิภาพ
ตัวอย่างการใช้ XPath ใน Java:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathConstants;
import org.w3c.dom.NodeList;
public class XPathExample {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("books.xml");
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
XPathExpression expr = xpath.compile("/bookstore/book[price>30]");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getTextContent());
}
}
}
จากตัวอย่างข้างต้น เป็นการแสดงการใช้ XPath ภายในโปรแกรม Java โดยการดึงหนังสือที่มีราคามากกว่า 30 (ถึงแม้ว่าตัวอย่างข้อมูลใน XML ที่เรามีไม่มีข้อมูลตามเงื่อนไขนี้)
XPath เป็นเครื่องมือที่ทรงพลังในการศึกษาการเข้าถึงข้อมูลภายในเอกสาร XML ด้วยความสามารถในการค้นหา ทำการกรอง และการนำข้อมูลไปประยุกต์ใช้โดยง่ายดาย นี่เป็นทักษะที่มีคุณค่าและควรได้รับการเรียนรู้ในปัจจุบัน หากคุณสนใจในทักษะด้านนี้ คุณสามารถพิจารณาเรียนรู้เพิ่มเติมที่ Expert-Programming-Tutor (EPT) ที่ซึ่งมีคอร์สเรียนหลากหลาย ตั้งแต่พื้นฐานไปจนถึงขั้นสูงในการเขียนโปรแกรมและเทคโนโลยี Web/XML
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM