【XML生成】根据JSON格式化的报文,动态生成XML

无需创建实体对象,根据属性动态生成XML方式

java 复制代码
	import org.w3c.dom.Document;
	import org.w3c.dom.Element;
	import java.io.File;
	import javax.xml.parsers.DocumentBuilder;
	import javax.xml.parsers.DocumentBuilderFactory;
	import javax.xml.transform.OutputKeys;
	import javax.xml.transform.Transformer;
	import javax.xml.transform.TransformerFactory;
	import javax.xml.transform.dom.DOMSource;
	import javax.xml.transform.stream.StreamResult;

	//根据动态属性,生成XML文件
    public static void generateXmlFromMap(Map<String, String> data, String rootName, String filePath) {
        try {
            // 创建 XML 文档
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.newDocument();

            // 创建根节点
            Element root = doc.createElement(rootName);
            doc.appendChild(root);

            // 遍历 Map,每个 key 作为标签名,value 作为文本内容
            for (Map.Entry<String, String> entry : data.entrySet()) {
                String tagName = entry.getKey();
                String value = entry.getValue() == null ? "" : entry.getValue().trim();

                Element element = doc.createElement(tagName);
                element.setTextContent(value);
                root.appendChild(element);
            }

            // 写出到文件
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // 美化格式
            transformer.transform(new DOMSource(doc), new StreamResult(new File(filePath)));

            System.out.println("XML 文件已生成:" + filePath);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 测试
    public static void main(String[] args) {
        // 模拟从 JSON
        Map<String, String> data = new HashMap<>();
        data.put("archiveNumber", "JZ-2025-0000");
        data.put("archiveDate", "2025-11-20");
        data.put("operUser", "张三");
        data.put("archiveTitle", "2025年11月记账凭证");
        data.put("creater", "张三");

        // 生成 XML
        generateXmlFromMap(data, "Archive", "archive.xml");
    }
相关推荐
Venuslite5 天前
从 Unexpected token < 到 Extra data:一次讲清 JSON 解析错误的排查思路
json
疯狂SQL11 天前
手写高性能在线 JSON 工具|Web Worker 工程化打包 + 语法自动修复 + 多语言代码生成实战
typescript·json·next.js·web worker·前端性能优化·esbuild·源码实战
tianyuanwo16 天前
深入解析 RISC-V 虚拟化中的 UEFI 固件配置:从 XML 到 NVRAM 的生命周期管理
xml·linux·risc-v
terry60016 天前
5G视频短信服务商选型全攻略:通道资源、架构能力与成本评估2026最新标准
大数据·人工智能·5g·json·asp.net·信息与通信·数据库架构
前网易架构师-高司机17 天前
带标注的辣椒病叶数据集,识别率95.9%,可识别三种病害和健康叶子,9916张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·病害·叶病·病叶·辣椒
PixelBai17 天前
JSON扁平化使用教程:从入门到精通
json
渔舟唱晚,雁阵惊寒17 天前
CSDN博客内容丢失如何恢复?
json
衣乌安、17 天前
JSON-RPC协议
网络协议·rpc·json
PixelBai17 天前
JSON过滤使用教程:从入门到精通
javascript·chrome·json