
XML
使用 LSSerializer 和 Transformer 将 XML 序列化为字符串
在处理 XML 数据时,有时候我们需要将 XML 转换为字符串的形式进行存储或传输。Java 提供了两种常用的方式来实现这个功能,分别是使用 LSSerializer 和 Transformer。LSSerializer 是 DOM Level 3 提供的 API,它可以将 DOM 树序列化为 XML 字符串。而 Transformer 是 Java 提供的用于转换 XML 的类,它可以将 DOM、SAX 和其他类型的数据源转换为 XML 字符串。下面我们将分别介绍这两种方式的使用方法,并且给出相应的案例代码。LSSerializer 的使用方法如下:Java// 创建 DOM 文档对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document = builder.newDocument();// 创建 XML 元素节点Element root = document.createElement("root");Element element = document.createElement("element");element.setTextContent("Hello, World!");root.appendChild(element);document.appendChild(root);// 创建 LSSerializer 对象LSSerializer serializer = ((DOMImplementationLS) document.getImplementation()).createLSSerializer();// 设置序列化参数LSOutput output = ((DOMImplementationLS) document.getImplementation()).createLSOutput();ByteArrayOutputStream stream = new ByteArrayOutputStream();output.setByteStream(stream);// 序列化 DOM 树为字符串serializer.write(document, output);// 输出序列化结果String XMLString = stream.toString();System.out.println(XMLString);上述代码首先创建了一个 DOM 文档对象,然后创建了一个 XML 元素节点并添加到根节点下,接着创建了一个 LSSerializer 对象和一个 LSOutput 对象,最后通过调用 LSSerializer 的 write 方法将 DOM 树序列化为字符串并输出。Transformer 的使用方法如下:Java// 创建 DOM 文档对象DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document = builder.newDocument();// 创建 XML 元素节点Element root = document.createElement("root");Element element = document.createElement("element");element.setTextContent("Hello, World!");root.appendChild(element);document.appendChild(root);// 创建 TransformerFactory 对象TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer = transformerFactory.newTransformer();// 设置序列化参数transformer.setOutputProperty(OutputKeys.INDENT, "yes");// 创建 DOMSource 对象DOMSource source = new DOMSource(document);// 创建 StreamResult 对象ByteArrayOutputStream stream = new ByteArrayOutputStream();StreamResult result = new StreamResult(stream);// 序列化 DOM 树为字符串transformer.transform(source, result);// 输出序列化结果String XMLString = stream.toString();System.out.println(XMLString);上述代码同样是首先创建了一个 DOM 文档对象,然后创建了一个 XML 元素节点并添加到根节点下,接着创建了一个 Transformer 对象和一个 StreamResult 对象,最后通过调用 Transformer 的 transform 方法将 DOM 树序列化为字符串并输出。通过上述的代码示例,我们可以看到 LSSerializer 和 Transformer 都可以将 XML 序列化为字符串。它们的使用方法略有不同,但都十分简单明了。根据实际需求,我们可以选择其中一种方式来实现 XML 到字符串的转换。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号