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

目录
相关文章
|
SQL 数据挖掘 测试技术
南大通用GBase8s数据库:LISTAGG函数的解析
南大通用GBase8s数据库:LISTAGG函数的解析
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
C语言 开发者
【C语言】断言函数 -《深入解析C语言调试利器 !》
断言(assert)是一种调试工具,用于在程序运行时检查某些条件是否成立。如果条件不成立,断言会触发错误,并通常会终止程序的执行。断言有助于在开发和测试阶段捕捉逻辑错误。
349 5
|
机器学习/深度学习 自然语言处理 语音技术
揭秘深度学习中的注意力机制:兼容性函数的深度解析
揭秘深度学习中的注意力机制:兼容性函数的深度解析
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
144 1
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
存储
atoi函数解析以及自定义类型经典练习题
atoi函数解析以及自定义类型经典练习题
392 0

热门文章

最新文章

推荐镜像

更多
  • DNS