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

简介: 大家好,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微信号

目录
相关文章
|
4月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
280 0
|
11月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
2737 1
|
10月前
|
存储 Java Maven
Maven系统级别依赖:解决部署时Jar包缺失问题
以上就是关于Maven系统级别依赖解决部署时Jar包缺失问题的解答,希望对你有所帮助。在软件开发中,遇到问题并解决问题是常态,希望你能够善用这些工具,解决你遇到的问题。
671 28
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
11月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
434 15
|
12月前
|
网络协议 Linux Go
自己动手编写tcp/ip协议栈1:tcp包解析
学习tuntap中的tun的使用方法,并使用tun接口解析了ip包和tcp包,这是实现tcp/ip协议栈的第一步。
412 15
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器

推荐镜像

更多
  • DNS