Skip to content
Siamcoder

การทำงานกับ DOM ใน Java (Working with the DOM in Java)

java2 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 อยู่ในพาธที่ถูกต้อง