java使用正则表达式,简单提取xml中的内容

我们现在互联网的交互很少可以离开xml了。有时候需要的xml很小,除了内容以外,格式也都不变,那么再解析xml的时候就没必要使用那些解析xml的大家伙了。简单使用正则表达式来提交可以省去我们加载和学习那些东西的麻烦。

需要解析的xml数据如下。

<?xml version="1.0" encoding="UTF-8" ?>
<pwd_message_list version="3.0">
<message_type>SMS_MT</message_type>
<data>
<message>
<msgid>-4992367180402027902</msgid>
<newmsgid>0712211115010001</newmsgid>
<mobile>13428952720</mobile>
<gwid>bjyd</gwid>
<spcode>106601359401159</spcode>
<serviceType>10202011</serviceType>
<linkid>13570813196334064831</linkid>
<mtmsg>heheh59</mtmsg>
<feeflag>1</feeflag>
<cpproductID>123<cpproductID>
<msgfmt>15</msgfmt>
<pktotal>1</pktotal>
<pknumber>1</pknumber>
</message>
......
<message>
<msgid>-4992367180402027902</msgid>
<newmsgid>0712211115010001</newmsgid>
<mobile>13428952720</mobile>
<gwid>bjyd</gwid>
<spcode>106601359401159</spcode>
<serviceType>10202011</serviceType>
<linkid>13570813196334064831</linkid>
<mtmsg>heheh59</mtmsg>
<feeflag>1</feeflag>
<cpproductID>123<cpproductID>
<msgfmt>15</msgfmt>
<pktotal>1</pktotal>
<pknumber>1</pknumber>
</message>
</data>
</pwd_message_list>



处理代码如下:

public void split(String data)
{
data=data.toLowerCase();
ArrayList<SmsMt> smsMtList=new ArrayList<SmsMt>();
Pattern pattern2=Pattern.compile("<message>(.*?)</message>");
Matcher matcher2=pattern2.matcher(data);
while(matcher2.find())
{
int i=1;
String data1=matcher2.group(i);

System.out.println(getParameter(data1,"mobile"));
System.out.println(getParameter(data1,"linkid"));
System.out.println(getParameter(data1,"mtmsg"));
System.out.println(getParameter(data1,"servicetype"));

i++;

}

}


public String getParameter(String data,String para)
{
String result="";
StringBuffer reStr=new StringBuffer();
reStr.append("<");
reStr.append(para);
reStr.append(">");
reStr.append("(.*?)");
reStr.append("</");
reStr.append(para);
reStr.append(">");
Pattern pattern=Pattern.compile(reStr.toString());
Matcher matcher=pattern.matcher(data);
if(matcher.find())
{
result=matcher.group(1);
}
return result;
}



将上面的xml文件,如果多行替换掉\r\n。然后使用split方法很容易取出<mobile>..</mobile><linkid></linkid>中的内容
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值