You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DOM解析XML时如何获取节点的XML字符串值

获取XML节点的XML字符串值(Java DOM实现)

你已经能定位到目标XML节点了,接下来要把它转换成XML字符串其实很简单——Java的DOM API本身没有直接提供这个方法,但我们可以借助Transformer类轻松实现,下面是具体的步骤和代码示例:

具体实现思路

  1. 确保你已经成功获取到目标Node对象(比如你提到的<test>节点)
  2. 使用TransformerFactory创建Transformer实例,它负责DOM节点到XML字符串的转换
  3. 可选配置输出参数(比如是否缩进、编码格式),让输出更易读
  4. 通过StringWriter捕获转换后的XML内容,最终得到字符串

完整代码示例

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.StringWriter;
import org.w3c.dom.Node;

// 假设你已经通过DOM API获取到了目标<test>节点
Node testNode = ...; // 替换成你实际获取节点的代码,比如list.item(index)

try {
    // 初始化转换工具
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    
    // 可选配置:开启缩进、指定编码,让输出更友好
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8");
    
    // 用StringWriter捕获转换后的XML内容
    StringWriter writer = new StringWriter();
    transformer.transform(new DOMSource(testNode), new StreamResult(writer));
    
    // 这里就是你要的节点XML字符串
    String nodeXmlString = writer.getBuffer().toString();
    System.out.println(nodeXmlString);
} catch (Exception e) {
    e.printStackTrace();
}

代码说明

  • DOMSource:包装你的目标节点,作为转换的输入源
  • StreamResult + StringWriter:把转换后的XML输出写入字符串,而不是文件或控制台
  • 缩进配置是可选的,如果不需要格式化,去掉setOutputProperty即可得到紧凑的一行XML

针对你给出的示例,运行这段代码后,nodeXmlString的结果会是:

<test>
  <tag>foobar</tag>
  <tag>foobar2</tag>
</test>

小提示

  • 记得先判断目标节点是否为null,避免空指针异常
  • 如果不需要保留XML声明(比如<?xml version="1.0" encoding="UTF-8"?>),可以添加配置:transformer.setOutputProperty(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes")

内容的提问来源于stack exchange,提问作者Awadesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:25:11