LSSerializer 与 Transformer 将 xml 序列化为字符串

xml

1个回答

写回答

liuyangac

2025-08-23 23:45

+ 关注

XML
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 到字符串的转换。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号