用正则表达式解析XML文档

本文介绍了一种使用正则表达式解析XML文档的方法,以提高处理效率。作者针对Java平台上的XML解析效率问题,实现了用正则表达式解析XML的API,能够使处理速度提升约10倍,适用于处理中移动的SOAP接口。
摘要由CSDN通过智能技术生成

这段时间做中移动的一些接口,看到那些"标准接口"心里不知道是什么感觉.连笑都懒得笑了.

一个连26个字母都认不全的人,说我要做英语同声翻译,说这种话除了需要天大的勇气,其它的只能说是无知了.连一些java的基础语法都不能正确应用,竟然写出给"中国移动"这种绝对企业级应用的接口,中兴公司开发的MM7接口,看了以后每一个有良心的程序员都有想自杀的感觉.

算了,不提它了.

目前在java平台上,要解析xml文档,即使只有"<abc></abc>"这样的一个标签,在生成document对象时,也至少要花费300ms左右,这样一次交互至少要在600ms左右,加上其它处理,一次通讯要1000ms以上,使得soap协议在java平台上根本不能进行实际应用.

其它这并不是SOAP协议的问题,着关键在于对XML文档的解析.基于这个原因,笔者实现了用正则表达式来解析XML文档的一些API,利用它来在替换中移动的大多数SOAP的接口,效率提高了10倍左右.

package org.axman.xml.regex;

import java.util.regex.*;
import java.util.*;

/**
 *
 * <p>Title: Document</p>
 *
 * <p>Description: 用正则表达式解析xml,目的是为了提高性能.</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: org.axman</p>
 *
 * @author :Axman
 * @version 1.0
 */
public class Document {
  private String xmlString;

  /**
   * 传入xml的字符串内容,对于InputStream,Reader对象请转换为String对象后传入构造方法.
   * @param xmlString String
   * @throws IllegalArgumentException
   */
  public Document(String xmlString) throws IllegalArgumentException{
    if(xmlString == null || xmlString.length() == 0)
      throw new IllegalArgumentException("Input string orrer!");
    this.xmlString = xmlString;
  }


  /**
   * 在文档中搜索指定的元素,返回符合条件的元素数组.
   * @param tagName String
   * @return String[]
   */
  public String[] getElementsByTag(String tagName){
    Pattern p = Pattern.compile("<"+tagName+"[^>]*?((>.*?</"+tagName+">)|(/>))");
    Matcher m = p.matcher(this.xmlString);
    ArrayList<String> al = new ArrayList<String>();
    while(m.find())
      al.add(m

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值