xml 读写 demo
时间: 2023-08-19 17:05:06 浏览: 40
以下是一个简单的Java XML读写示例:
```java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XmlDemo {
public static void main(String[] args) {
try {
// 创建XML文档
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
// 创建根元素
Element root = doc.createElement("books");
doc.appendChild(root);
// 创建子元素
Element book1 = doc.createElement("book");
book1.setAttribute("id", "1");
Element name1 = doc.createElement("name");
name1.setTextContent("Java编程思想");
Element author1 = doc.createElement("author");
author1.setTextContent("Bruce Eckel");
book1.appendChild(name1);
book1.appendChild(author1);
Element book2 = doc.createElement("book");
book2.setAttribute("id", "2");
Element name2 = doc.createElement("name");
name2.setTextContent("Java核心技术");
Element author2 = doc.createElement("author");
author2.setTextContent("Cay Horstmann");
book2.appendChild(name2);
book2.appendChild(author2);
// 添加子元素到根元素
root.appendChild(book1);
root.appendChild(book2);
// 将XML文档写入文件
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("books.xml"));
transformer.transform(source, result);
// 读取XML文档
File xmlFile = new File("books.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document xml = dBuilder.parse(xmlFile);
xml.getDocumentElement().normalize();
// 获取所有book元素
NodeList nList = xml.getElementsByTagName("book");
List<Book> books = new ArrayList<>();
for (int i = 0; i < nList.getLength(); i++) {
Node nNode = nList.item(i);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
String id = eElement.getAttribute("id");
String name = eElement.getElementsByTagName("name").item(0).getTextContent();
String author = eElement.getElementsByTagName("author").item(0).getTextContent();
books.add(new Book(id, name, author));
}
}
// 打印所有book元素
for (Book book : books) {
System.out.println(book);
}
} catch (ParserConfigurationException | SAXException | IOException | TransformerException e) {
e.printStackTrace();
}
}
static class Book {
private String id;
private String name;
private String author;
public Book(String id, String name, String author) {
this.id = id;
this.name = name;
this.author = author;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", author=" + author + "]";
}
}
}
```
该示例创建了一个XML文档,包含两本书的信息,并将文档写入文件。然后它从文件中读取XML文档,解析出所有的book元素,并将它们打印出来。在这个示例中,我们使用了Java自带的DOM API来读写XML文件,同时也使用了XPath来查找元素。