#GPT-4 Conversation #1103342503077351474
1 messages · Page 1 of 1 (latest)
Xử lý tài liệu XML
Tài liệu XML có cấu trúc dạng cây như cấu trúc tập tin và thư mục trên đĩa. Tài liệu có một thành phần gốc (root) chứa tất cả các thành phần khác. Mỗi thành phần bắt đầu bằng một thẻ dạng <tag> và kết thúc bằng thẻ </tag>. Mỗi thành phần có thể có các thuộc tính được xác định bởi cặp attributeNameX = "attributeValueX". Trong mỗi thành phần có thể chứa chuỗi văn bản hoặc chứa các thành phần con khác. Ví dụ sau minh họa một tài liệu XML:
<Book id="123" status="available">
<Name>Refactoring</Name>
<Author>
<FirstName>Martin</FirstName>
<LastName>Fowler</LastName>
<OtherBooks>
<BookName>UML Distilled</BookName>
<BookName>Analysis Patterns</BookName>
</OtherBooks>
</Author>
</Book>
Yêu cầu:
a) Dùng java thiết kế và cài đặt cấu trúc các thành phần của tài liệu XML (áp dụng mẫu thiết kế gì). Test tạo một tài liệu XML như ví dụ trên.
Bạn có thể xử lý và tạo tài liệu XML sử dụng Java và các thư viện hỗ trợ như DOM, SAX hoặc JAXB.
Trong ví dụ này, tôi sẽ sử dụng DOM (Document Object Model) để tạo tài liệu XML giống ví dụ trên. Đầu tiên, hãy tạo các lớp mô hình:
- Book.java
public class Book {
private String id;
private String status;
private String name;
private Author author;
// Getters and setters
}
- Author.java
import java.util.List;
public class Author {
private String firstName;
private String lastName;
private List<String> otherBooks;
// Getters and setters
}
Tiếp theo, hãy tạo một lớp để xử lý việc tạo tài liệu XML:
- XMLHandler.java
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.List;
public class XMLHandler {
public Document createXML(Book book) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element rootElement = document.createElement("Book");
rootElement.setAttribute("id", book.getId());
rootElement.setAttribute("status", book.getStatus());
Element nameElement = document.createElement("Name");
nameElement.appendChild(document.createTextNode(book.getName()));
rootElement.appendChild(nameElement);
Author author = book.getAuthor();
Element authorElement = document.createElement("Author");
Element firstNameElement = document.createElement("FirstName");
firstNameElement.appendChild(document.createTextNode(author.getFirstName()));
authorElement.appendChild(firstNameElement);
Element lastNameElement = document.createEl
ement("LastName");
lastNameElement.appendChild(document.createTextNode(author.getLastName()));
authorElement.appendChild(lastNameElement);
Element otherBooksElement = document.createElement("OtherBooks");
List<String> otherBooks = author.getOtherBooks();
for (String bookName : otherBooks) {
Element bookNameElement = document.createElement("BookName");
bookNameElement.appendChild(document.createTextNode(bookName));
otherBooksElement.appendChild(bookNameElement);
}
authorElement.appendChild(otherBooksElement);
rootElement.appendChild(authorElement);
document.appendChild(rootElement);
return document;
} catch (ParserConfigurationException e) {
e.printStackTrace();
return null;
}
}
}
Cuối cùng, bạn cần tạo một lớp chính để chạy chương trình:
4. Main.java
```java
import org.w3c.dom.Document;
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 java.io.StringWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Book book = new Book();
book.setId("123");
book.setStatus("available");
book.setName("Refactoring");
Author author = new Author();
author.setFirstName("Martin");
author.setLastName("Fowler");
author.setOtherBooks(Arrays.asList("UML Distilled", "Analysis Patterns"));
book.setAuthor(author);
XMLHandler handler = new XMLHandler();
Document document = handler.createXML(book);
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
StringWri
ter writer = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(writer));
String output = writer.getBuffer().toString();
System.out.println(output);
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
Khi chạy chương trình, bạn sẽ thấy đầu ra là tài liệu XML giống như ví dụ đã đưa ra.
không được sài thư viện hỗ trợ thì sao