XML内容解析成实体类
XML解析成实体类
- 解析方法
- 实体类
- 测试
说明:直接上干货,不废话
解析方法
public static List<PlatJuMinBaoXian> parse(String xmlString) {List<PlatJuMinBaoXian> result = new ArrayList<>();try {// 创建 DocumentBuilderDocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();// 将字符串转换为输入流ByteArrayInputStream input = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));// 解析 XMLDocument document = builder.parse(input);document.getDocumentElement().normalize();// 获取所有 <r> 标签NodeList nodeList = document.getElementsByTagName("r");// 遍历每个 <r> 标签for (int i = 0; i < nodeList.getLength(); i++) {Node node = nodeList.item(i);if (node.getNodeType() == Node.ELEMENT_NODE) {Element element = (Element) node;// 创建 PlatJuMinBaoXian 对象PlatJuMinBaoXian platJuMinBaoXian = new PlatJuMinBaoXian();platJuMinBaoXian.setJfxmbh(element.getAttribute("jfxmbh"));platJuMinBaoXian.setZznf(element.getAttribute("zznf"));platJuMinBaoXian.setQsnf(element.getAttribute("qsnf"));platJuMinBaoXian.setJfxmmc(element.getAttribute("jfxmmc"));platJuMinBaoXian.setJfxmje(element.getAttribute("jfxmje"));platJuMinBaoXian.setJfrq(element.getAttribute("jfrq"));// 添加到结果列表result.add(platJuMinBaoXian);}}} catch (Exception e) {e.printStackTrace();}return result;}
实体类
@Data
public class PlatJuMinBaoXian {//起始年月private String qsnf;//终止年月private String zznf;//缴费项目编号private String jfxmbh;//缴费项目名称private String jfxmmc ;//缴费金额private String jfxmje;//缴费日期private String jfrq;}
测试
public static void main(String[] args) {String xmlString = "<root>" +"<r jfxmbh=\"C11\" zznf=\"2023\" qsnf=\"2023\" jfxmmc=\"普通个人缴费\" jfxmje=\"350.00000000\" jfrq=\"20230220\" />" +"<r jfxmbh=\"C41\" zznf=\"2023\" qsnf=\"2023\" jfxmmc=\"缴费补贴\" jfxmje=\"30.00000000\" jfrq=\"20230220\" />" +"</root>";String xmlStringNew = "<r jfxmbh=\"C11\" zznf=\"2023\" qsnf=\"2023\" jfxmmc=\"普通个人缴费\" jfxmje=\"350.00000000\" jfrq=\"20230220\" /><r jfxmbh=\"C41\" zznf=\"2023\" qsnf=\"2023\" jfxmmc=\"缴费补贴\" jfxmje=\"30.00000000\" jfrq=\"20230220\" />";String endXml = "<root>" + xmlStringNew + "</root>";List<PlatJuMinBaoXian> result = parse(endXml);result.forEach(System.out::println);}