Java 中 XML 处理工具类详解

在 Java 开发中,处理 XML 数据是一个常见的需求。无论是与外部系统进行数据交互,还是在内部进行数据存储和传输,XML 都扮演着重要的角色。本文将详细介绍一个名为 XmlUtils 的工具类,它提供了 XML 解析和去除 CDATA 标签的功能。

工具类概述

parseXml 和 removeCdata。这两个方法可以帮助我们更方便地处理 XML 数据。

代码示例

java

import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.ylink.health.his.dto.MdmDoctorDto;

public class XmlUtils {

    /**
     * 将 XML 字符串解析为 Java 对象
     *
     * @param xml XML 字符串
     * @param clazz 目标 Java 类
     * @return 解析后的 Java 对象
     */
    public static  T parseXml(String xml, Class clazz) {
        try {
            XmlMapper xmlMapper = new XmlMapper();
            return xmlMapper.readValue(xml, clazz);
        } catch (Exception e) {
            throw new RuntimeException("Failed to parse XML", e);
        }
    }

    /**
     * 去除 XML 中的 CDATA 标签
     *
     * @param xml XML 字符串
     * @return 去除 CDATA 后的 XML 字符串
     */
    public static String removeCdata(String xml) {
        return xml.replace("").replace("]]>", "");
    }

    public static void main(String[] args) {
        String xml = "00N0000010060711625999900730421116250null注射用头孢唑肟钠ZSYTBZWNITEUBKEQ1.0g191196532000000119530国药准字H20065460111g11911nullnull029.7352121001800null9.730N1101210379100121.54null2706700116250.0N09.73]]>";
        String cleanedXml = XmlUtils.removeCdata(xml);
        System.out.println("Cleaned XML: " + cleanedXml);

        MdmDoctorDto mdmDoctorDto = XmlUtils.parseXml(cleanedXml, MdmDoctorDto.class);
        System.out.println("Medicine Name: " + mdmDoctorDto.getDmmc());
    }
}

方法详解

parseXml 方法

java

public static  T parseXml(String xml, Class clazz) {
    try {
        XmlMapper xmlMapper = new XmlMapper();
        return xmlMapper.readValue(xml, clazz);
    } catch (Exception e) {
        throw new RuntimeException("Failed to parse XML", e);
    }
}

  • 功能:将 XML 字符串解析为指定类型的 Java 对象。
  • 参数
    • xml:要解析的 XML 字符串。
    • clazz:目标 Java 类的 Class 对象。
  • 实现细节
    • 使用 Jackson 库的 XmlMapper 类来完成 XML 到 Java 对象的转换。
    • 如果解析过程中出现异常,将抛出 RuntimeException

removeCdata 方法

java

public static String removeCdata(String xml) {
    return xml.replace("").replace("]]>", "");
}

  • 功能:去除 XML 字符串中的 CDATA 标签。
  • 参数
    • xml:包含 CDATA 标签的 XML 字符串。
  • 实现细节
    • 使用 String 类的 replace 方法将  替换为 ,将 ]]> 替换为 

测试代码

java

public static void main(String[] args) {
    String xml = "00N0000010060711625999900730421116250null注射用头孢唑肟钠ZSYTBZWNITEUBKEQ1.0g191196532000000119530国药准字H20065460111g11911nullnull029.7352121001800null9.730N1101210379100121.54null2706700116250.0N09.73]]>";
    String cleanedXml = XmlUtils.removeCdata(xml);
    System.out.println("Cleaned XML: " + cleanedXml);

    MdmDoctorDto mdmDoctorDto = XmlUtils.parseXml(cleanedXml, MdmDoctorDto.class);
    System.out.println("Medicine Name: " + mdmDoctorDto.getDmmc());
}

  • 功能:测试 XmlUtils 类的两个方法。
  • 实现细节
    • 定义一个包含 CDATA 标签的 XML 字符串。
    • 调用 removeCdata 方法去除 CDATA 标签。
    • 调用 parseXml 方法将处理后的 XML 字符串解析为 MdmDoctorDto 对象。
    • 打印处理后的 XML 字符串和药品名称。

总结

通过 XmlUtils 工具类,我们可以方便地处理 XML 数据,包括去除 CDATA 标签和将 XML 字符串解析为 Java 对象。这种封装方式提高了代码的复用性和可维护性,使得 XML 处理变得更加简单和高效。

你可能感兴趣的:(java,开发语言)