网站快速排名工具,高端品牌logo图片,免费建手机商城网站吗,新型建房有哪几种JAVA #xff5c;日常开发中读写XML详解 前言一、XML 简介二、在 Java 中读取 XML2.1 使用 DOM#xff08;Document Object Model#xff09;方式读取 XML2.2 使用 SAX#xff08;Simple API for XML#xff09;方式读取 XML 三、在 Java 中写入 XML3.1 使用 DOM 方式写入… JAVA 日常开发中读写XML详解 前言一、XML 简介二、在 Java 中读取 XML2.1 使用 DOMDocument Object Model方式读取 XML2.2 使用 SAXSimple API for XML方式读取 XML 三、在 Java 中写入 XML3.1 使用 DOM 方式写入 XML 结束语优质源码分享 JAVA 日常开发中读写XML详解以下是 Java 日常开发中常见问题的归纳讲解语法错误相关问题数据类型相关问题面向对象编程相关问题集合类相关问题文件操作和输入输出相关问题等详解内有代码示例。 前言 在数字浪潮汹涌澎湃的时代程序开发宛如一座神秘而宏伟的魔法城堡矗立在科技的浩瀚星空中。代码的字符似那闪烁的星辰按照特定的轨迹与节奏组合、交织、碰撞即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索程序员们则化身无畏的星辰开拓者指尖在键盘上轻舞准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷在 0 和 1 的二进制世界里镌刻下属于人类创新与突破的不朽印记。
一、XML 简介 XMLeXtensible Markup Language是一种可扩展标记语言它被设计用来传输和存储数据。XML 的结构类似于 HTML都是由标签组成但 XML 的标签是可以自定义的这使得它具有很强的灵活性。
例如一个简单的 XML 文件可以用来存储书籍信息
?xml version1.0 encodingUTF-8?
bookstorebook categorycookingtitle langenEveryday Italian/titleauthorGiada De Laurentiis/authoryear2005/yearprice30.00/price/book
/bookstore在这个例子中?xml version1.0 encodingUTF-8?是 XML 的声明它定义了 XML 的版本和编码方式。是根元素是子元素并且元素有一个属性category。
二、在 Java 中读取 XML
2.1 使用 DOMDocument Object Model方式读取 XML DOM 方式会将整个 XML 文档加载到内存中形成一个树形结构然后可以通过遍历这个树形结构来获取 XML 中的数据。 首先需要导入相关的 Java XML 库。在 Java 中主要是org.w3c.dom和javax.xml.parsers包。
以下是一个简单的读取 XML 文件并获取其中书籍标题的示例代码
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.File;public class ReadXMLWithDOM {public static void main(String[] args) {try {File xmlFile new File(books.xml);DocumentBuilderFactory dbFactory DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder dbFactory.newDocumentBuilder();Document doc dBuilder.parse(xmlFile);doc.getDocumentElement().normalize();NodeList nList doc.getElementsByTagName(book);for (int i 0; i nList.getLength(); i) {Node nNode nList.item(i);if (nNode.getNodeType() Node.ELEMENT_NODE) {Element eElement (Element) nNode;System.out.println(Book title: eElement.getElementsByTagName(title).item(0).getTextContent());}}} catch (Exception e) {e.printStackTrace();}}
}上述代码首先创建一个DocumentBuilderFactory对象然后使用它创建一个DocumentBuilder。通过DocumentBuilder的parse方法将 XML 文件解析为一个Document对象。Document对象代表了整个 XML 文档的树形结构。通过getElementsByTagName方法可以获取具有指定标签名的节点列表然后遍历这个列表来获取每个元素中的元素的文本内容。
2.2 使用 SAXSimple API for XML方式读取 XML SAX 是一种基于事件驱动的 XML 解析方式。它不会将整个 XML 文档加载到内存中而是在解析 XML 文档的过程中当遇到特定的 XML 结构如开始标签、结束标签、文本内容等时会触发相应的事件通过定义事件处理器来处理这些事件从而获取 XML 中的数据。 要使用 SAX需要实现org.xml.sax.ContentHandler接口来定义事件处理器。以下是一个简单的示例用于统计 XML 文件中书籍的数量
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;public class ReadXMLWithSAX {public static void main(String[] args) {try {File xmlFile new File(books.xml);SAXParserFactory factory SAXParserFactory.newInstance();SAXParser saxParser factory.newSAXParser();MyHandler handler new MyHandler();saxParser.parse(xmlFile, handler);System.out.println(Number of books: handler.getBookCount());} catch (Exception e) {e.printStackTrace();}}
}class MyHandler extends DefaultHandler {private int bookCount 0;Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {if (qName.equalsIgnoreCase(book)) {bookCount;}}public int getBookCount() {return bookCount;}
}在这个示例中MyHandler类继承自DefaultHandler并重写了startElement方法。当 SAX 解析器遇到开始标签时会调用startElement方法。如果遇到标签就会将bookCount加 1。最后通过getBookCount方法获取书籍的数量。
三、在 Java 中写入 XML
3.1 使用 DOM 方式写入 XML
以下是一个简单的示例用于创建一个新的 XML 文件并写入书籍信息
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
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;public class WriteXMLWithDOM {public static void main(String[] args) {try {DocumentBuilderFactory dbFactory DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder dbFactory.newDocumentBuilder();Document doc dBuilder.newDocument();Element bookstore doc.createElement(bookstore);doc.appendChild(bookstore);Element book doc.createElement(book);bookstore.appendChild(book);Element title doc.createElement(title);title.setTextContent(New Book);book.appendChild(title);TransformerFactory transformerFactory TransformerFactory.newInstance();Transformer transformer transformerFactory.newTransformer();DOMSource source new DOMSource(doc);StreamResult result new StreamResult(new File(new_books.xml));transformer.transform(source, result);} catch (Exception e) {e.printStackTrace();}}
}首先通过DocumentBuilder创建一个新的Document对象。然后使用createElement方法创建 XML 元素并使用appendChild方法将元素添加到文档树中。设置好元素的文本内容后通过Transformer将Document对象转换为 XML 文件并保存到磁盘上。 使用 JAXBJava Architecture for XML Binding方式写入 XML JAXB 提供了一种将 Java 对象与 XML 数据进行相互转换的机制。首先需要定义 Java 类来对应 XML 的结构。
假设我们有一个Book类和一个Bookstore类来对应上面的 XML 结构
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.util.ArrayList;
import java.util.List;class Book {private String title;private String author;private int year;private double price;// 构造函数、getter和setter方法省略
}class Bookstore {private ListBook books new ArrayList();public void addBook(Book book) {books.add(book);}// 其他方法省略
}以下是使用 JAXB 将Bookstore对象转换为 XML 并保存的示例代码
public class WriteXMLWithJAXB {public static void main(String[] args) {try {Bookstore bookstore new Bookstore();Book book new Book();book.setTitle(Another New Book);book.setAuthor(New Author);book.setYear(2024);book.setPrice(35.0);bookstore.addBook(book);JAXBContext jaxbContext JAXBContext.newInstance(Bookstore.class);Marshaller jaxbMarshaller jaxbContext.createMarshaller();jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);jaxbMarshaller.marshal(bookstore, new File(jaxb_books.xml));} catch (JAXBException e) {e.printStackTrace();}}
}在这个示例中首先创建了Bookstore和Book对象并设置了相关属性。然后通过JAXBContext和Marshaller将Bookstore对象转换为 XML 格式并保存到文件中。setProperty方法用于设置输出格式为格式化后的 XML。
结束语 亲爱的朋友无论前路如何漫长与崎岖都请怀揣梦想的火种因为在生活的广袤星空中总有一颗属于你的璀璨星辰在熠熠生辉静候你抵达。 愿你在这纷繁世间能时常收获微小而确定的幸福如春日微风轻拂面庞所有的疲惫与烦恼都能被温柔以待内心永远充盈着安宁与慰藉。 至此文章已至尾声而您的故事仍在续写不知您对文中所叙有何独特见解期待您在心中与我对话开启思想的新交流。 --------------- 业精于勤荒于嬉 --------------- --------------- 行成于思毁于随 --------------- 优质源码分享 【百篇源码模板】html5各行各业官网模板源码下载 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例附源码) 【VUE系列】VUE3实现个人网站模板源码 【HTML源码】HTML5小游戏源码 【C#实战案例】C# Winform贪吃蛇小游戏源码 关注博主 带你实现畅游前后端 大屏可视化 带你体验酷炫大屏 神秘个人简介 带你体验不一样得介绍 酷炫邀请函 带你体验高大上得邀请 ① 提供云服务部署有自己的阿里云 ② 提供前端、后端、应用程序、H5、小程序、公众号等相关业务 如合作请联系我期待您的联系。 注本文撰写于CSDN平台,作者xcLeigh所有权归作者所有 https://blog.csdn.net/weixin_43151418如果相关下载没有跳转请查看这个地址相关链接没有跳转皆是抄袭本文转载请备注本文原地址。 亲码字不易动动小手欢迎 点赞 ➕ 收藏如 问题请留言评论博主看见后一定及时给您答复 原文地址https://blog.csdn.net/weixin_43151418/article/details/144189058防止抄袭原文地址不可删除