javax.xml 包是 Java 标准库中用于处理 XML 的核心包,提供了 XML 解析、转换、验证等功能。主要包含以下核心组件:
DocumentBuilder - DOM 解析器
SAXParser - SAX 解析器
XMLReader - SAX2 解析器
Transformer - XSLT 转换器
TransformerFactory - 转换器工厂
Schema - XML Schema
Validator - 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;
public class DOMParserExample {
public static void main(String[] args) {
try {
// 创建 DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// 解析 XML 文件
Document document = builder.parse("books.xml");
document.getDocumentElement().normalize();
// 获取根元素
System.out.println("根元素: " + document.getDocumentElement().getNodeName());
// 获取所有 book 元素
NodeList nodeList = document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
String id = element.getAttribute("id");
String title = element.getElementsByTagName("title").item(0).getTextContent();
String author = element.getElementsByTagName("author").item(0).getTextContent();
String price = element.getElementsByTagName("price").item(0).getTextContent();
System.out.println("图书 ID: " + id);
System.out.println("标题: " + title);
System.out.println("作者: " + author);
System.out.println("价格: " + price);
System.out.println("------------");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SAXParserExample {
public static void main(String[] args) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bTitle = false;
boolean bAuthor = false;
boolean bPrice = false;
@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes) {
if (qName.equalsIgnoreCase("book")) {
String id = attributes.getValue("id");
System.out.println("图书 ID: " + id);
}
if (qName.equalsIgnoreCase("title")) {
bTitle = true;
}
if (qName.equalsIgnoreCase("author")) {
bAuthor = true;
}
if (qName.equalsIgnoreCase("price")) {
bPrice = true;
}
}
@Override
public void characters(char[] ch, int start, int length) {
if (bTitle) {
System.out.println("标题: " + new String(ch, start, length));
bTitle = false;
}
if (bAuthor) {
System.out.println("作者: " + new String(ch, start, length));
bAuthor = false;
}
if (bPrice) {
System.out.println("价格: " + new String(ch, start, length));
bPrice = false;
}
}
};
saxParser.parse("books.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
}import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
public class XSLTExample {
public static void main(String[] args) {
try {
// 创建转换器工厂
TransformerFactory factory = TransformerFactory.newInstance();
// 创建 XSLT 转换器
Transformer transformer = factory.newTransformer(
new StreamSource(new File("transform.xsl")));
// 执行转换
transformer.transform(
new StreamSource(new File("books.xml")),
new StreamResult(new File("output.html")));
System.out.println("转换完成!");
} catch (Exception e) {
e.printStackTrace();
}
}
}import javax.xml.XMLConstants;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
public class XMLValidationExample {
public static void main(String[] args) {
try {
// 创建 Schema 工厂
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// 创建 Schema
Schema schema = factory.newSchema(new File("books.xsd"));
// 创建验证器
Validator validator = schema.newValidator();
// 验证 XML 文件
validator.validate(new StreamSource(new File("books.xml")));
System.out.println("XML 验证成功!");
} catch (Exception e) {
System.out.println("验证失败: " + e.getMessage());
e.printStackTrace();
}
}
}<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<title>Java 编程思想</title>
<author>Bruce Eckel</author>
<price>89.00</price>
</book>
<book id="2">
<title>Effective Java</title>
<author>Joshua Bloch</author>
<price>79.00</price>
</book>
<book id="3">
<title>Spring 实战</title>
<author>Craig Walls</author>
<price>69.00</price>
</book>
</bookstore>1、标准化 - 遵循 W3C XML 标准
2、可扩展 - 支持自定义解析器和处理器
3、多解析方式 - 支持 DOM、SAX、StAX 等解析模式
4、安全性 - 提供 XML 外部实体攻击防护
5、性能优化 - 支持各种性能调优选项