"你可以使用Java的DOM解析器来读取和写入XML文件。以下是一个示例代码,演示了如何使用DOM解析器读取XML文件并将其转换为Java对象,然后将Java对象写回XML文件。\n\n首先,你需要在Java类中创建一个表示书籍的类Book:\n\njava\npublic class Book {\n private String id;\n private String author;\n private String title;\n private String genre;\n private double price;\n private String publishDate;\n private String description;\n\n // 创建getter和setter方法\n\n // 创建toString方法\n}\n\n\n然后,你可以使用DOM解析器读取XML文件并将其转换为Java对象。\n\njava\nimport org.w3c.dom.*;\nimport javax.xml.parsers.*;\nimport java.io.*;\n\npublic class XMLParser {\n public static void main(String[] args) {\n try {\n // 创建DOM解析器工厂\n DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\n\n // 创建DOM解析器\n DocumentBuilder builder = factory.newDocumentBuilder();\n\n // 从文件中读取XML文档\n Document document = builder.parse(new File("path/to/xml/file.xml"));\n\n // 获取根元素\n Element catalogElement = document.getDocumentElement();\n\n // 获取所有书籍节点\n NodeList bookNodes = catalogElement.getElementsByTagName("book");\n\n // 创建一个Book对象的列表\n List<Book> books = new ArrayList<>();\n\n // 遍历每个书籍节点并创建Book对象\n for (int i = 0; i < bookNodes.getLength(); i++) {\n Node bookNode = bookNodes.item(i);\n if (bookNode.getNodeType() == Node.ELEMENT_NODE) {\n Element bookElement = (Element) bookNode;\n\n // 获取书籍属性\n String id = bookElement.getAttribute("id");\n\n // 获取书籍子元素的值\n String author = bookElement.getElementsByTagName("author").item(0).getTextContent();\n String title = bookElement.getElementsByTagName("title").item(0).getTextContent();\n String genre = bookElement.getElementsByTagName("genre").item(0).getTextContent();\n double price = Double.parseDouble(bookElement.getElementsByTagName("price").item(0).getTextContent());\n String publishDate = bookElement.getElementsByTagName("publish_date").item(0).getTextContent();\n String description = bookElement.getElementsByTagName("description").item(0).getTextContent();\n\n // 创建Book对象并添加到列表中\n Book book = new Book();\n book.setId(id);\n book.setAuthor(author);\n book.setTitle(title);\n book.setGenre(genre);\n book.setPrice(price);\n book.setPublishDate(publishDate);\n book.setDescription(description);\n\n books.add(book);\n }\n }\n\n // 将列表中的Book对象写入XML文件\n writeBooksToXml(books, "path/to/xml/file.xml");\n\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n\n public static void writeBooksToXml(List<Book> books, String filePath) {\n try {\n // 创建DOM解析器工厂\n DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\n\n // 创建DOM解析器\n DocumentBuilder builder = factory.newDocumentBuilder();\n\n // 创建一个新的XML文档\n Document document = builder.newDocument();\n\n // 创建根元素\n Element catalogElement = document.createElement("catalog");\n document.appendChild(catalogElement);\n\n // 遍历Book对象列表并创建XML元素\n for (Book book : books) {\n // 创建书籍元素\n Element bookElement = document.createElement("book");\n bookElement.setAttribute("id", book.getId());\n catalogElement.appendChild(bookElement);\n\n // 创建子元素并设置文本内容\n Element authorElement = document.createElement("author");\n authorElement.setTextContent(book.getAuthor());\n bookElement.appendChild(authorElement);\n\n Element titleElement = document.createElement("title");\n titleElement.setTextContent(book.getTitle());\n bookElement.appendChild(titleElement);\n\n Element genreElement = document.createElement("genre");\n genreElement.setTextContent(book.getGenre());\n bookElement.appendChild(genreElement);\n\n Element priceElement = document.createElement("price");\n priceElement.setTextContent(String.valueOf(book.getPrice()));\n bookElement.appendChild(priceElement);\n\n Element publishDateElement = document.createElement("publish_date");\n publishDateElement.setTextContent(book.getPublishDate());\n bookElement.appendChild(publishDateElement);\n\n Element descriptionElement = document.createElement("description");\n descriptionElement.setTextContent(book.getDescription());\n bookElement.appendChild(descriptionElement);\n }\n\n // 创建TransformerFactory\n TransformerFactory transformerFactory = TransformerFactory.newInstance();\n\n // 创建Transformer\n Transformer transformer = transformerFactory.newTransformer();\n\n // 设置输出属性\n transformer.setOutputProperty(OutputKeys.INDENT, "yes");\n\n // 创建DOMSource对象\n DOMSource source = new DOMSource(document);\n\n // 创建StreamResult对象\n StreamResult result = new StreamResult(new File(filePath));\n\n // 将XML写入文件\n transformer.transform(source, result);\n } catch (Exception e) {\n e.printStackTrace();\n }\n }\n}\n\n\n你可以将上述代码保存在一个名为XMLParser.java的文件中,并将"path/to/xml/file.xml"替换为你的XML文件的路径。然后,你可以运行Java程序,它将读取XML文件并将其转换为Book对象列表,然后将Book对象列表写回XML文件。\n

Java DOM 解析器:读取 XML 文件到对象并写入

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

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