沫沫金-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微信号

目录
相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3028 1
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
508 15
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
346 0

推荐镜像

更多
  • DNS
  • 下一篇
    开通oss服务