你可以使用Java的DOM解析器来读取和写入XML文件。以下是一个示例代码,演示了如何使用DOM解析器读取XML文件并将其转换为Java对象,然后将Java对象写回XML文件。

首先,你需要在Java类中创建一个表示书籍的类Book:

public class Book {
    private String id;
    private String author;
    private String title;
    private String genre;
    private double price;
    private String publishDate;
    private String description;

    // 创建getter和setter方法

    // 创建toString方法
}

然后,你可以使用DOM解析器读取XML文件并将其转换为Java对象。

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;

public class XMLParser {
    public static void main(String[] args) {
        try {
            // 创建DOM解析器工厂
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

            // 创建DOM解析器
            DocumentBuilder builder = factory.newDocumentBuilder();

            // 从文件中读取XML文档
            Document document = builder.parse(new File("path/to/xml/file.xml"));

            // 获取根元素
            Element catalogElement = document.getDocumentElement();

            // 获取所有书籍节点
            NodeList bookNodes = catalogElement.getElementsByTagName("book");

            // 创建一个Book对象的列表
            List<Book> books = new ArrayList<>();

            // 遍历每个书籍节点并创建Book对象
            for (int i = 0; i < bookNodes.getLength(); i++) {
                Node bookNode = bookNodes.item(i);
                if (bookNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element bookElement = (Element) bookNode;

                    // 获取书籍属性
                    String id = bookElement.getAttribute("id");

                    // 获取书籍子元素的值
                    String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
                    String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
                    String genre = bookElement.getElementsByTagName("genre").item(0).getTextContent();
                    double price = Double.parseDouble(bookElement.getElementsByTagName("price").item(0).getTextContent());
                    String publishDate = bookElement.getElementsByTagName("publish_date").item(0).getTextContent();
                    String description = bookElement.getElementsByTagName("description").item(0).getTextContent();

                    // 创建Book对象并添加到列表中
                    Book book = new Book();
                    book.setId(id);
                    book.setAuthor(author);
                    book.setTitle(title);
                    book.setGenre(genre);
                    book.setPrice(price);
                    book.setPublishDate(publishDate);
                    book.setDescription(description);

                    books.add(book);
                }
            }

            // 将列表中的Book对象写入XML文件
            writeBooksToXml(books, "path/to/xml/file.xml");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void writeBooksToXml(List<Book> books, String filePath) {
        try {
            // 创建DOM解析器工厂
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

            // 创建DOM解析器
            DocumentBuilder builder = factory.newDocumentBuilder();

            // 创建一个新的XML文档
            Document document = builder.newDocument();

            // 创建根元素
            Element catalogElement = document.createElement("catalog");
            document.appendChild(catalogElement);

            // 遍历Book对象列表并创建XML元素
            for (Book book : books) {
                // 创建书籍元素
                Element bookElement = document.createElement("book");
                bookElement.setAttribute("id", book.getId());
                catalogElement.appendChild(bookElement);

                // 创建子元素并设置文本内容
                Element authorElement = document.createElement("author");
                authorElement.setTextContent(book.getAuthor());
                bookElement.appendChild(authorElement);

                Element titleElement = document.createElement("title");
                titleElement.setTextContent(book.getTitle());
                bookElement.appendChild(titleElement);

                Element genreElement = document.createElement("genre");
                genreElement.setTextContent(book.getGenre());
                bookElement.appendChild(genreElement);

                Element priceElement = document.createElement("price");
                priceElement.setTextContent(String.valueOf(book.getPrice()));
                bookElement.appendChild(priceElement);

                Element publishDateElement = document.createElement("publish_date");
                publishDateElement.setTextContent(book.getPublishDate());
                bookElement.appendChild(publishDateElement);

                Element descriptionElement = document.createElement("description");
                descriptionElement.setTextContent(book.getDescription());
                bookElement.appendChild(descriptionElement);
            }

            // 创建TransformerFactory
            TransformerFactory transformerFactory = TransformerFactory.newInstance();

            // 创建Transformer
            Transformer transformer = transformerFactory.newTransformer();

            // 设置输出属性
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");

            // 创建DOMSource对象
            DOMSource source = new DOMSource(document);

            // 创建StreamResult对象
            StreamResult result = new StreamResult(new File(filePath));

            // 将XML写入文件
            transformer.transform(source, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

你可以将上述代码保存在一个名为XMLParser.java的文件中,并将"path/to/xml/file.xml"替换为你的XML文件的路径。然后,你可以运行Java程序,它将读取XML文件并将其转换为Book对象列表,然后将Book对象列表写回XML文件


原文地址: http://www.cveoy.top/t/topic/iz3b 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录