把下面的xml文件读成 java 对象。然后new一个java对象把数据写进去。然后写到xml文件xml version=10catalog book id=bk101 authorGambardella Matthewauthor titleXML Developers Guidetitle genreComputergenre price4495pr
你可以使用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 著作权归作者所有。请勿转载和采集!