DefaultHandler 的举例使用~解析非常规XML文件的方法

要求:解析下面这样的XML文件,这个是非常规的XML文件
<adaptCountry name="Orange ES" mcc="214" mnc="03" date_format="dd-MM-yyyy"  time="12" />
由于担心会出现ANR,所以开启了一个子线程去做这个事情。



import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class XMLParseTimeDateThread extends Thread {

	public void run() {
		try {
			SAXParserFactory spf = SAXParserFactory.newInstance();
			SAXParser sp = spf.newSAXParser();
			XMLReader xr = sp.getXMLReader();
			String mXMLFilePath = "date_format_conf.xml";//
			xr.setContentHandler(new XMLParse());
			FileInputStream fis = new FileInputStream(new File(mXMLFilePath));
			if (fis != null) {
				xr.parse(new InputSource(fis));
			}
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

/*
 * <adaptCountry name="Orange ES" mcc="214" mnc="03" date_format="dd-MM-yyyy"  time="12" />
 */
	class XMLParse extends DefaultHandler {
	public String mNumeric;
	public String mNum_match;
	String strMccMnc = null;

	@Override
	public void startDocument() throws SAXException {
		mNumeric = "";
		mNum_match = "";
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		System.out.println(qName);
		System.out.println(localName);
		
		String Mcc;
		String mnc;
		String strMccMnc = "46002";// SystemProperties.get("gsm.sim.operator.numeric");
		if (strMccMnc == null || strMccMnc.length() < 5) {
			return;
		}
		Mcc = strMccMnc.substring(0, 3);

		mnc = strMccMnc.substring(3, strMccMnc.length());
		System.out.println(attributes.getLength()); 
		
		for (int i = 0; i < attributes.getLength(); i++) {
			
			String attr_name = attributes.getLocalName(i);
			String attr_value = attributes.getValue(i);
			System.out.print(attr_name+" ");
			System.out.println(attr_value);
		}

	}

	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		if ("virtualNet".equals(qName)) {
			mNumeric = "";
			mNum_match = "";
		}

	}
}
/*
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		new XMLParseTimeDateThread().start();
	}*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值