沫沫金-XML节点解析(List内容)不依赖任何Jar包_JDK原生函数

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 大家好,XML解析不依赖任何Jar包的编写模式,关键词:Pattern、Matcher使用。工具类如下/** * Xml工具类 * @author 章力 * @微信 zl4828 */public class XmlUtil { /**     * 从消息message中提取出指定的tagName节点,包括他得子节点.

大家好,XML解析不依赖任何Jar包的编写模式,关键词:Pattern、Matcher使用。


工具类如下

/**
 * Xml工具类
 * @author 章力
 * @微信 zl4828
 */
public class XmlUtil {

	/**
     * 从消息message中提取出指定的tagName节点,包括他得子节点.
     *
     * @param xmlMessage
     * @param tagName
     * @return
     * @throws Exception
     */
	public static String pareXml(String xmlMessage, String tagName)
    {
        String regex = ".*?(<"+tagName+">.*?</"+tagName+">)|(<"+tagName+"/>)";
        Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
        Matcher matcher = pattern.matcher(xmlMessage);

        if (matcher.find())
        {
            xmlMessage = matcher.group(1);
            return xmlMessage;
        }
        else
        {
            throw new RuntimeException("无法提取xml消息体.tagName = " + tagName);
        }
    }

	/**
     * 从消息message中提取出指定的tagName节点中间的内容
     *
     * @param xmlMessage
     * @param tagName
     * @return
     * @throws Exception
     */
	public static String pareXmlContent(String xmlMessage, String tagName)
    {
        String regex = "\\<" + tagName + ">(.*?)\\</" + tagName + ">";
        Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
        Matcher matcher = pattern.matcher(xmlMessage);
        if (matcher.find())
        {
            xmlMessage = matcher.group(1);
            return xmlMessage;
        }
        else
        {
            throw new RuntimeException("无法提取xml消息体.tagName = " + tagName);
        }
    }
	
	/**
     * 返回匹配到的所有节点
     *
     * @param xmlMessage
     * @param tagName
     * @return
     * @throws Exception
     */
	public static Matcher pareXmlMatcher(String xmlMessage, String tagName)
    {
		String regex = ".*?(<"+tagName+">.*?</"+tagName+">)|(<"+tagName+"/>)";
        Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
        Matcher matcher = pattern.matcher(xmlMessage);
        return matcher;
    }
}

使用实例

        /**
         * 解析返回的XML,沫沫金提供支持微信@zl4828
         */
        Matcher matcher = XmlUtil.pareXmlMatcher(resultXml, "Result");
        while (matcher.find()) {
        	System.out.println(XmlUtil.pareXmlContent(matcher.group(),"hosName"));
	   }

示例XML内容

<?xml version="1.0" encoding="UTF-8"?> <Response><MessageHeader>
  <code>0</code>
  <desc>成功</desc>
</MessageHeader><List>
  <Result>
    <hosOrgCode>43523202X61010311A1001</hosOrgCode>
    <hosName>西安市第九医院</hosName>
    <hospitalAdd>沫沫金</hospitalAdd>
    <hospitalRule></hospitalRule>
    <hospitalWeb></hospitalWeb>
    <trafficGuide></trafficGuide>
    <hospitalDesc>专注网页设计、Web前端工程</hospitalDesc>
    <hospitalTel>微信:zl4828</hospitalTel>
    <hospitalGrade></hospitalGrade>
    <payMode>|3|</payMode>
    <orderMode>|2|</orderMode>
    <isSpTime>1</isSpTime>
  </Result>
  <Result>
    <hosOrgCode>43720037161011311A5211</hosOrgCode>
    <hosName>西安市第八医院</hosName>
    <hospitalAdd></hospitalAdd>
    <hospitalRule></hospitalRule>
    <hospitalWeb></hospitalWeb>
    <trafficGuide></trafficGuide>
    <hospitalDesc>网络营销</hospitalDesc>
    <hospitalTel>15319419526</hospitalTel>
    <hospitalGrade>1</hospitalGrade>
    <payMode>|3|</payMode>
    <orderMode>|2|</orderMode>
    <isSpTime>1</isSpTime>
  </Result>
</List></Response>



总结:不想千篇一律,以上是你尝鲜的动力。


作者:沫沫金@zl4828微信号

目录
相关文章
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
26天前
|
Java 编译器 API
深入解析:JDK与JVM的区别及联系
在Java开发和运行环境中,JDK(Java Development Kit)和JVM(Java Virtual Machine)是两个核心概念,它们在Java程序的开发、编译和运行过程中扮演着不同的角色。本文将深入解析JDK与JVM的区别及其内在联系,为Java开发者提供清晰的技术干货。
25 1
|
1月前
|
安全 Java 开发者
AOP中的JDK动态代理与CGLIB动态代理:深度解析与实战模拟
【11月更文挑战第21天】面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,它通过将横切关注点(cross-cutting concerns)与业务逻辑分离,以提高代码的可维护性和可重用性。在Java开发中,AOP的实现离不开动态代理技术,其中JDK动态代理和CGLIB动态代理是两种常用的方式。本文将从背景、历史、功能点、业务场景、底层逻辑等多个维度,深度解析这两种代理方式的区别,并通过Java示例进行模拟和比较。
57 4
|
2月前
|
Java 关系型数据库 MySQL
【编程基础知识】Eclipse连接MySQL 8.0时的JDK版本和驱动问题全解析
本文详细解析了在使用Eclipse连接MySQL 8.0时常见的JDK版本不兼容、驱动类错误和时区设置问题,并提供了清晰的解决方案。通过正确配置JDK版本、选择合适的驱动类和设置时区,确保Java应用能够顺利连接MySQL 8.0。
262 1
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
2月前
|
缓存 Java 索引
查看并解析当前jdk的垃圾收集器
本文介绍了如何查看和解析当前JDK使用的垃圾收集器,通过在IDEA中配置JVM选项并运行示例代码来展示G1垃圾回收器的详细信息和命令行标志。
35 0
查看并解析当前jdk的垃圾收集器
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
87 0
|
2月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器

推荐镜像

更多