การทำงานกับ DOM ใน Java (Working with the DOM in Java)
— java — 2 min read
การทำงานกับ DOM (Document Object Model) ในภาษา Java เป็นการจัดการและเข้าถึงโครงสร้างของเว็บเพจหรือเอกสาร XML ในรูปแบบต้นฉบับ คุณสามารถใช้ DOM เพื่อเปลี่ยนแปลงหรือเข้าถึงองค์ประกอบต่าง ๆ ในเอกสาร เช่น สร้าง อ่าน แก้ไข หรือลบองค์ประกอบ
นี่คือตัวอย่างโค้ดการใช้งาน DOM ใน Java:
import org.w3c.dom.*;import javax.xml.parsers.*;import java.io.*;
public class DOMExample { public static void main(String[] args) { try { // อ่านไฟล์ XML File file = new File("example.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(file);
// สร้าง NodeList ขององค์ประกอบที่ต้องการ NodeList nodeList = document.getElementsByTagName("book");
// วนลูปผ่าน NodeList และแสดงข้อมูล for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; String title = element.getElementsByTagName("title").item(0).getTextContent(); String author = element.getElementsByTagName("author").item(0).getTextContent(); int year = Integer.parseInt(element.getElementsByTagName("year").item(0).getTextContent());
System.out.println("หนังสือที่ " + (i+1)); System.out.println("ชื่อหนังสือ: " + title); System.out.println("ผู้เขียน: " + author); System.out.println("ปีที่ตีพิมพ์: " + year); System.out.println(); } } } catch (Exception e) { e.printStackTrace(); } }}`
ในตัวอย่างนี้ เราใช้คลาส DocumentBuilderFactory
, DocumentBuilder
และ Document
จากแพคเกจ javax.xml.parsers
เพื่ออ่านไฟล์ XML และสร้างตัวแทนของเอกสาร XML ที่ใช้ในการทำงานกับ DOM ซึ่งโดยทั่วไปจะใช้เพื่อประมวลผลเอกสาร XML ใน Java
เราใช้เมธอด getElementsByTagName()
เพื่อรับ NodeList ขององค์ประ กอบที่มีแท็กที่ตรงกับชื่อที่ระบุในพารามิเตอร์ ในตัวอย่างนี้เราเลือกองค์ประกอบ "book" และใช้วนลูปผ่าน NodeList เพื่อเข้าถึงและแสดงข้อมูลในแต่ละองค์ประกอบ
การทำงานกับ DOM ใน Java ยังมีเมธอดและฟังก์ชันอื่น ๆ ที่ใช้ในการเข้าถึงโครงสร้างของเอกสาร XML อย่างละเอียด คุณสามารถเรียนรู้เพิ่มเติมได้จากเอกสาร Java API หรือที่อื่น ๆ บนเว็บไซต์ที่เกี่ยวข้องกับการพัฒนา Java
หากคุณต้องการทำการเปลี่ยนแปลงในเอกสาร XML เช่น เพิ่มองค์ประกอบใหม่ แก้ไขเนื้อหาขององค์ประกอบที่มีอยู่ หรือลบองค์ประกอบที่ไม่ต้องการ คุณสามารถใช้เมธอดและฟังก์ชันต่าง ๆ ของ DOM ใน Java เพื่อดำเนินการเหล่านี้
นี่คือตัวอย่างโค้ดสำหรับการเพิ่มองค์ประกอบใหม่ในเอกสาร XML โดยใช้ DOM ใน Java:
import org.w3c.dom.*;import javax.xml.parsers.*;import java.io.*;
public class DOMExample { public static void main(String[] args) { try { // อ่านไฟล์ XML File file = new File("example.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(file);
// สร้างองค์ประกอบใหม่ Element newElement = document.createElement("book"); Element titleElement = document.createElement("title"); Element authorElement = document.createElement("author"); Element yearElement = document.createElement("year");
// กำหนดเนื้อหาให้กับองค์ประกอบใหม่ titleElement.setTextContent("หนังสือใหม่"); authorElement.setTextContent("ผู้เขียนใหม่"); yearElement.setTextContent("2023");
// เพิ่มองค์ประกอบใหม่ลงในเอกสาร newElement.appendChild(titleElement); newElement.appendChild(authorElement); newElement.appendChild(yearElement); document.getDocumentElement().appendChild(newElement);
// บันทึกเอกสาร XML ที่มีการเปลี่ยนแปลง TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(file); transformer.transform(source, result);
System.out.println("เพิ่มองค์ประกอบใหม่เรียบร้อยแล้ว"); } catch (Exception e) { e.printStackTrace(); } }}`
ในตัวอย่างนี้ เราใช้เมธอด createElement()
เพื่อสร้างองค์ประกอบใหม่และ setTextContent()
เพื่อกำหนดเนื้อหาให้กับแต่ละองค์ประกอบ ต่อมา เราเพิ่มองค์ประกอบใหม่ลงในเอกสาร XML โดยใช้เมธอด appendChild()
และเมธอดอื่น ๆ เพื่อจัดการกับโครงสร้างของเอกสาร
สุดท้าย เราใช้ Transformer
เพื่อบันทึกเอกสาร XML ที่มีการเปลี่ยนแปลงลงในไฟล์
หมายเหตุ: โค้ดตัวอย่างนี้ใช้ example.xml
เป็นไฟล์ XML ที่ต้องการดำเนินการ เมื่อเรียกใช้โค้ด โปรดแน่ใจว่าไฟล์ XML อยู่ในพาธที่ถูกต้อง