xml解析利用正则表达式获取指定两个字符串之间内容
在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗?此时不仅代码繁琐,而且准确率还不是那么高,采用此种方式,可以获取指定两种字符串之间的任意xml文本。
[java]view plain copy
packagecom.starit.analyse.util; importjava.text.SimpleDateFormat; importjava.util.ArrayList; importjava.util.List; importjava.util.regex.Matcher; importjava.util.regex.Pattern; publicclassDealStrSub{/** *正则表达式匹配两个指定字符串中间的内容*@paramsoap*@return*/publicstaticList<String>getSubUtil(Stringsoap,Stringrgex){List<String>list=newArrayList<String>();Patternpattern=pile(rgex);//匹配的模式 Matcherm=pattern.matcher(soap);while(m.find()){inti=1;list.add(m.group(i));i++;}returnlist;} /** *返回单个字符串,若匹配到多个的话就返回第一个,方法与getSubUtil一样*@paramsoap*@paramrgex*@return*/publicstaticStringgetSubUtilSimple(Stringsoap,Stringrgex){Patternpattern=pile(rgex);//匹配的模式 Matcherm=pattern.matcher(soap);while(m.find()){returnm.group(1);}return"";} /** *测试*@paramargs*/publicstaticvoidmain(String[]args){Stringstr="abc3443abcfgjhgabcgfjabc";Stringrgex="abc(.*?)abc";System.out.println(getSubUtil(str,rgex));System.out.println(getSubUtilSimple(str,rgex));}}
若给出的正则表达式rgex匹配不到的话,就会返回空,这两个方法运用得当,解析复杂的xml就迎刃而解了。
运行结果如下:
原文地址/614.html