Tạo Mới Tập Tin XML Sử Dụng DOM Trong Java - Hướng Dẫn Java

Views: 2.328

Trong bài viết trước, chúng ta đã cùng tìm hiểu làm thế nào để đọc được một tập tin XML sử dụng DOM trong Java. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo mới tập tin XML sử dụng DOM các bạn nhé!

Các bước để tạo mới một tập tin XML sử dụng DOM bao gồm:

  • Dùng đối tượng DocumentBuilder để định nghĩa nội dung của tập tin XML
  • Dùng đối tượng Transformer để ghi tập tin XML xuống ổ đĩa.

Trong bài viết này, chúng ta sẽ đi vào ví dụ cụ thể để tạo tập tin XML có nội dung như sau:

Java <?xml version="1.0" encoding="UTF-8" standalone="no"?> <students> <student n0='1'> <name>John</name> <code>12345</code> <age>19</age> </student> </students>
12345678 <?xml version="1.0"encoding="UTF-8"standalone="no"?><students><student n0='1'><name>John</name><code>12345</code><age>19</age></student></students>

Định nghĩa nội dung tập tin XML

Đầu tiên chúng ta sẽ tạo mới một đối tượng Document từ đối tượng DocumentBuilder trước.

Java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder buider = factory.newDocumentBuilder(); Document doc = buider.newDocument();
123 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder buider=factory.newDocumentBuilder();Document doc=buider.newDocument();

Trong tập tin XML trên, thẻ students là thẻ ngoài cùng nhất, root element. Do đó chúng ta sẽ thêm thẻ này trước.

Java Element students = doc.createElement("students"); doc.appendChild(students);
12 Element students=doc.createElement("students");doc.appendChild(students);

Bây giờ chúng ta sẽ thêm thẻ student nằm bên trong thẻ students:

Java Element student = doc.createElement("student"); students.appendChild(student);
12 Element student=doc.createElement("student");students.appendChild(student);

Để thêm thuộc tính n0=”1″ cho thẻ student, chúng ta sẽ sử dụng đối tượng Attr:

Java Attr attr = doc.createAttribute("n0"); attr.setValue("1"); student.setAttributeNode(attr);
123 Attr attr=doc.createAttribute("n0");attr.setValue("1");student.setAttributeNode(attr);

Bên trong thẻ student chúng ta lại có thêm các thẻ tên (name), mã sinh viên (code) và tuổi (age), nên nhiệm vụ còn lại của chúng ta là tạo 3 Element cho 3 thẻ đó và thêm chúng vào thẻ student mà thôi.

Thẻ name:

Java Element name = doc.createElement("name"); name.appendChild(doc.createTextNode("John")); student.appendChild(name);
123 Element name=doc.createElement("name");name.appendChild(doc.createTextNode("John"));student.appendChild(name);

Thẻ code:

Java Element code = doc.createElement("code"); code.appendChild(doc.createTextNode("12345")); student.appendChild(code);
123 Element code=doc.createElement("code");code.appendChild(doc.createTextNode("12345"));student.appendChild(code);

Thẻ age:

Java Element age = doc.createElement("age"); age.appendChild(doc.createTextNode("19")); student.appendChild(age);
123 Element age=doc.createElement("age");age.appendChild(doc.createTextNode("19"));student.appendChild(age);

Ghi tập tin XML xuống ổ đĩa

Bằng cách sử dụng đối tượng Transformer, chúng ta sẽ ghi nội dung của tập tin xuống ổ đĩa nơi do chúng ta chỉ định.

Đầu tiên chúng ta cần đối tượng Transformer trước:

Java TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer();
12 TransformerFactory transformerFactory=TransformerFactory.newInstance();Transformer transformer=transformerFactory.newTransformer();

Trong đối tượng Transformer, nó có một phương thức với tên gọi là transform() với hai tham số là interface Source (được tạo ra từ đối tượng Document chứa nội dung của tập tin XML) và interface Result (chứa thông tin về tập tin XML sau khi được ghi xuống ổ đĩa) để thực hiện việc ghi tập tin XML xuống ổ đĩa.

Chúng ta sẽ tạo đối tượng DOMSource (đối tượng này hiện thực interface Source) để chứa nội dung của tập tin:

Java DOMSource source = new DOMSource(doc);
1 DOMSource source=newDOMSource(doc);

Và đối tượng StreamResult (hiện thực interface Result) chứa thông tin của tập tin XML:

Java File f = new File("D://students.xml"); StreamResult result = new StreamResult(f);
12 Filef=newFile("D://students.xml");StreamResult result=newStreamResult(f);

Bây giờ chúng ta có thể gọi phương thức transform() của đối tượng Transformer để thực hiện việc ghi nội dung tập tin xuống ổ đĩa rồi:

Java transformer.transform(source, result);
1 transformer.transform(source,result);

Đầy đủ code như sau:

Java package com.huongdanjava; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; public class DomExample { public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, TransformerException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder buider = factory.newDocumentBuilder(); Document doc = buider.newDocument(); // Tạo thẻ students Element students = doc.createElement("students"); doc.appendChild(students); // Tạo thẻ student Element student = doc.createElement("student"); students.appendChild(student); // Tạo thuộc tính n0=1 Attr attr = doc.createAttribute("n0"); attr.setValue("1"); student.setAttributeNode(attr); // Thêm thẻ name Element name = doc.createElement("name"); name.appendChild(doc.createTextNode("John")); student.appendChild(name); // Thẻ code Element code = doc.createElement("code"); code.appendChild(doc.createTextNode("12345")); student.appendChild(code); // Thẻ age Element age = doc.createElement("age"); age.appendChild(doc.createTextNode("19")); student.appendChild(age); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); File f = new File("E://students.xml"); StreamResult result = new StreamResult(f); transformer.transform(source, result); } }
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 packagecom.huongdanjava; importjava.io.File;importjava.io.IOException; importjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.ParserConfigurationException;importjavax.xml.transform.Transformer;importjavax.xml.transform.TransformerException;importjavax.xml.transform.TransformerFactory;importjavax.xml.transform.dom.DOMSource;importjavax.xml.transform.stream.StreamResult; importorg.w3c.dom.Attr;importorg.w3c.dom.Document;importorg.w3c.dom.Element;importorg.xml.sax.SAXException; publicclassDomExample{ publicstaticvoidmain(String[]args)throwsParserConfigurationException,SAXException,IOException,TransformerException{DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder buider=factory.newDocumentBuilder();Document doc=buider.newDocument(); // Tạo thẻ studentsElement students=doc.createElement("students");doc.appendChild(students); // Tạo thẻ studentElement student=doc.createElement("student");students.appendChild(student); // Tạo thuộc tính n0=1Attr attr=doc.createAttribute("n0");attr.setValue("1");student.setAttributeNode(attr); // Thêm thẻ nameElement name=doc.createElement("name");name.appendChild(doc.createTextNode("John"));student.appendChild(name); // Thẻ codeElement code=doc.createElement("code");code.appendChild(doc.createTextNode("12345"));student.appendChild(code); // Thẻ ageElement age=doc.createElement("age");age.appendChild(doc.createTextNode("19"));student.appendChild(age); TransformerFactory transformerFactory=TransformerFactory.newInstance();Transformer transformer=transformerFactory.newTransformer(); DOMSource source=newDOMSource(doc); Filef=newFile("E://students.xml");StreamResult result=newStreamResult(f); transformer.transform(source,result);}}

Kết quả:

Tạo mới tập tin XML sử dụng DOM trong Java

5/5 - (1 bình chọn)

Từ khóa » đọc File Xml Trong Java