简单地解析XML文件

1.SAX解析XML文档的过程:
1>创建事件处理程序;
2>创建SAX解析器;
3>将事件处理程序分配给解析器
4>将文档进行解析,将每个事件发送给处理程序;

如:

SAXParserFactory factory=SAXParserFactory.newInstance();  
SAXParser parser=factory.newSAXParser();
XMLReader reader=parser.getXMLReader(); 
//handler是一个ContentHandler实现类的实例
reader.setContentHandler(handler);  

2.实现ContentHandler接口:
创建一个类继承自ContentHandler类,并主要实现startElement,endElement,characters等方法。如:

public class MyHandler implements ContentHandler{  
		boolean flag_lat,flag_lng,flag_location,flag_address;  
		String str_address,str_lat,str_lng;  
		public String getData()  
		{  
			return "地址: " + str_address + "\n经度: " + str_lng + "\n纬度: " + str_lat;  
		}  
		public void startElement(String uri, String localName, String qName,  
				Attributes atts) throws SAXException { 
			if (localName.equals("formatted_address")) {
				flag_address = true;
			}
			if(localName.equals("location"))  
			{  
				flag_location=true;  
			}  
			if(flag_location==true)  
			{  
				if(localName.equals("lat"))  
				{  
					flag_lat=true;  
				}  
				if(localName.equals("lng"))  
				{  
					flag_lng=true;  
				}  
			}  
		}  
		public void characters(char[] ch, int start, int length)  
				throws SAXException {  
			if(flag_lat == true)  
			{  
				str_lat=new String(ch,start,length);  
			}  
			if (flag_address == true) {
				str_address = new String(ch, start, length);
			}
			if(flag_lng== true)  
			{  
				str_lng=new String(ch,start,length);  
			}  
		}  
		public void endElement(String uri, String localName, String qName)  
				throws SAXException {  
			if (localName.equals("lat")) {
				flag_lat=false;  
			} 
			if(localName.equals("lng"))
			{
				flag_lng=false;  
			}
			if(localName.equals("location"))  
			{  
				flag_location=false;  
			}  
			if (localName.equals("formatted_address")) {
				flag_address = false;
			}
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值