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

Spring Boot中使用Jackson XML Mapper实现XHTML转字符串的问题咨询

基于XML Mapper实现自定义XML转目标JSON的方案

核心实现步骤

  • 第一步:解析自定义my.xml文件
    如果你使用Java生态的Jackson XML Mapper,先完成映射器初始化和文件解析,不需要提前定义实体类的场景可以直接解析为Map结构:
    // 初始化XML Mapper
    XmlMapper xmlMapper = new XmlMapper();
    // 关闭未知字段报错开关,适配自定义XML的非固定结构
    xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    // 忽略XML命名空间,避免命名空间带来的解析异常
    xmlMapper.configure(FromXmlParser.Feature.IGNORE_NAMESPACE, true);
    
    // 方式1:有对应实体类时直接解析为POJO
    MyXmlEntity xmlEntity = xmlMapper.readValue(new File("my.xml"), MyXmlEntity.class);
    // 方式2:无实体类时直接解析为通用Map结构
    Map<String, Object> xmlDataMap = xmlMapper.readValue(new File("my.xml"), Map.class);
    
  • 第二步:结构映射调整
    按照你需要的JSON格式要求,调整解析得到的对象/Map结构:包括字段重命名、嵌套结构调整、数据类型转换、冗余字段过滤,比如将XML解析得到的user_name字段重命名为JSON需要的userName,将字符串类型的数字转换为数值类型。
  • 第三步:序列化输出JSON
    用JSON序列化工具将调整后的结构输出为符合要求的JSON字符串,按需配置输出规则:
    ObjectMapper jsonMapper = new ObjectMapper();
    // 配置输出时忽略空值字段
    jsonMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    // 配置格式化输出,不需要格式化可以去掉writerWithDefaultPrettyPrinter()
    String targetJson = jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(xmlEntity);
    

特殊场景适配

  • 如果你只需要提取XML中的部分字段生成JSON,可以直接用XPath定位提取需要的节点值,直接组装成目标JSON结构,不需要全量解析整个XML文件,性能更高。
  • 如果XML存在重复节点、属性和子节点重名的情况,可以在XML Mapper中配置USE_WRAPPER_AS_ARRAY_NAME等特性适配解析规则,避免解析结果结构异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:04