Java XML编程:从入门到实战,轻松掌握数据交换利器

一、XML简介
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它类似于HTML,但XML更加灵活和可扩展。XML的主要目的是存储和传输数据,其文档由一系列的标签和文本组成。以下是一个简单的XML示例:



Everyday Italian
Giada De Laurentiis
2005 30.00


在这个示例中,我们定义了一个名为
bookstore
的根元素,它包含了一个
book
子元素,
book
元素又包含了诸如
title
、
author
、
year
和
price
等子元素,并且通过属性(如
category
和
lang
)为元素提供了更多的描述信息。
二、Java中解析XML的方法
Java提供了多种方式来解析XML,其中比较常用的有DOM(文档对象模型)和SAX(简单XML应用程序接口)。
2.1 DOM解析
DOM解析会将整个XML文档加载到内存中,形成一个树形结构。以下是一个简单的DOM解析示例:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class DOMParserExample {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(“example.xml”);

NodeList bookList = document.getElementsByTagName(“book”);
for (int i = 0; i < bookList.getLength(); i++) { Element book = (Element) bookList.item(i); String category = book.getAttribute("category"); String title = book.getElementsByTagName("title").item(0).getTextContent(); System.out.println("Category: " + category + ", Title: " + title); } } catch (Exception e) { e.printStackTrace(); } } } 2.2 SAX解析 SAX解析是一种基于事件的解析方式,它不会将整个XML文档加载到内存中。以下是一个简单的SAX解析示例: 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; public class SAXParserExample { public static void main(String[] args) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler handler = new DefaultHandler() { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("book".equals(qName)) { String category = attributes.getValue("category"); System.out.println("Category: " + category); } } }; saxParser.parse("example.xml", handler); } catch (Exception e) { e.printStackTrace(); } } } 三、Java中操作XML的方法 Java提供了多种方法来操作XML,包括创建、修改和删除XML元素。 3.1 创建XML 以下是一个使用DOM解析创建XML的示例: import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; public class CreateXMLExample { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); Element bookstore = document.createElement("bookstore"); document.appendChild(bookstore); Element book = document.createElement("book"); book.setAttribute("category", "COOKING"); bookstore.appendChild(book); Element title = document.createElement("title"); title.setAttribute("lang", "en"); title.setTextContent("Everyday Italian"); book.appendChild(title); // 保存XML文档 javax.xml.parsers.DocumentWriter writer = new DocumentWriter(); writer.write(document, "example.xml"); } catch (Exception e) { e.printStackTrace(); } } } 3.2 修改XML 以下是一个使用DOM解析修改XML的示例: import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; public class ModifyXMLExample { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("example.xml"); Element book = (Element) document.getElementsByTagName("book").item(0); book.getElementsByTagName("title").item(0).setTextContent("New Title"); // 保存修改后的XML文档 javax.xml.parsers.DocumentWriter writer = new DocumentWriter(); writer.write(document, "example.xml"); } catch (Exception e) { e.printStackTrace(); } } } 3.3 删除XML 以下是一个使用DOM解析删除XML的示例: import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; public class DeleteXMLExample { public static void main(String[] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse("example.xml"); Element bookstore = (Element) document.getElementsByTagName("bookstore").item(0); bookstore.removeChild(document.getElementsByTagName("book").item(0)); // 保存修改后的XML文档 javax.xml.parsers.DocumentWriter writer = new DocumentWriter(); writer.write(document, "example.xml"); } catch (Exception e) { e.printStackTrace(); } } } 四、总结 Java XML编程是一种强大的数据交换工具,可以帮助开发者轻松地处理和操作XML数据。通过本文的介绍,相信你已经对Java XML编程有了初步的了解。在实际应用中,你可以根据需要选择合适的解析和操作方法,以实现你的需求。