加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sax解析XML

发布时间:2020-12-16 05:51:25 所属栏目:百科 来源:网络整理
导读:《SAX解析》 1、新建一个类(自己测试一下下啦,超容易的) import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attrib


《SAX解析》

1、新建一个类(自己测试一下下啦,超容易的)

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.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
 
public class SaxDemo {
//1、要抛几个异常
    public static void main(String[] args)throws ParserConfigurationException,SAXException,IOException {
       // TODO Auto-generatedmethod stub
//2、获得解析工厂
SAXParserFactoryfactory=SAXParserFactory.newInstance();
//3、通过工厂获取SAX解析器
SAXParserparser=factory.newSAXParser();
//4、获取读取器
XMLReader reader=parser.getXMLReader();
//5、注册事件处理器
reader.setContentHandler(newMyContentHandler2());
//6、解析xml文件
reader.parse("tianqi.xml");
    }
 
}
//这个接口用来解析整个文档,自己随便修改啦。
class MyContentHandlerimplements ContentHandler{
//三个参数:整个文档,开始节点,长度
    public void characters(char[] arg0,int arg1,int arg2)throws SAXException {
       // TODO Auto-generatedmethod stub
       System.out.print(new String(arg0,arg1,arg2));
    }
 
    public void endDocument() throws SAXException {
       // TODO Auto-generatedmethod stub
       System.out.println("文档解析结束了·····");
    }
 
    public void endElement(String arg0,String arg1,String arg2)
           throws SAXException {
       // TODO Auto-generatedmethod stub
       System.out.println("发现结束标签·····"+arg2);
    }
 
    public void endPrefixMapping(String arg0) throws SAXException {
       // TODO Auto-generatedmethod stub
      
    }
 
    public void ignorableWhitespace(char[] arg0,int arg2)
           throws SAXException {
       // TODO Auto-generatedmethod stub
      
    }
 
    public void processingInstruction(String arg0,String arg1)
           throws SAXException {
        // TODO Auto-generated method stub
      
    }
 
    public void setDocumentLocator(Locator arg0) {
       // TODO Auto-generatedmethod stub
      
    }
 
    public void skippedEntity(String arg0) throws SAXException {
       // TODO Auto-generatedmethod stub
      
    }
 
    public void startDocument() throws SAXException {
       // TODO Auto-generatedmethod stub
       System.out.println("文档开始解析```");
    }
 
    public void startElement(String arg0,String arg2,Attributes arg3) throws SAXException {
       // TODO Auto-generatedmethod stub
       System.out.println("发现了开始标签···"+arg3);
    }
 
    public void startPrefixMapping(String arg0,String arg1)
           throws SAXException {
       // TODO Auto-generatedmethod stub
      
    }
   
}
 
 
//继承的这个类什么也没干(用来筛选指定数据)
class MyContentHandler2extends DefaultHandler{
    private StringeleName=null;
    private int count=0;
    public void characters(char[] arg0,int arg2)throws SAXException {
       // TODO Auto-generatedmethod stub
       if("city".equals(eleName)&&++count==1){
       System.out.print(new String(arg0,arg2));
    }}
    public void startElement(String arg0,String name,Attributes arg3) throws SAXException {
       // TODO Auto-generatedmethod stub
       this.eleName=name;
       //System.out.println(name);
    }
    public void endElement(String arg0,String arg2)
           throws SAXException {
       // TODO Auto-generatedmethod stub
       eleName=null;
       //System.out.println(arg2);
    }
}




2、XML文件:


实时天气: http://www.weather.com.cn/data/sk/101010100.html
http://www.weather.com.cn/data/cityinfo/101010100.html
http://www.weather.com.cn/data/zs/101010100.html(指数)


实时+预报(7天):http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100
http://wthrcdn.etouch.cn/WeatherApi?city=北京

<?xml version="1.0"encoding="UTF-8"?>
<resp>
	<city>北京</city>
	<updatetime>20:55</updatetime>
	<wendu>23</wendu>
	<fengli>3级</fengli>
	<shidu>52%</shidu>
	<fengxiang>东风</fengxiang>
	<sunrise_1>04:45</sunrise_1>
	<sunset_1>19:41</sunset_1>
	<sunrise_2>04:45</sunrise_2>
	<sunset_2>19:42</sunset_2>
	<environment>
		<aqi>83</aqi>
		<pm25>18</pm25>
		<suggest>极少数敏感人群应减少户外活动</suggest>
		<quality>良</quality>
		<MajorPollutants>臭氧8小时</MajorPollutants>
		<o3>113</o3>
		<co>0</co>
		<pm10>51</pm10>
		<so2>5</so2>
		<no2>35</no2>
		<time>19:00:00</time>
	</environment>
	<yesterday>
		<date_1>8日星期日</date_1>
		<high_1>高温 30℃</high_1>
		<low_1>低温 17℃</low_1>
		<day_1>
			<type_1>多云</type_1>
			<fx_1>无持续风向</fx_1>
			<fl_1>微风</fl_1>
		</day_1>
		<night_1>
			<type_1>多云</type_1>
			<fx_1>无持续风向</fx_1>
			<fl_1>微风</fl_1>
		</night_1>
	</yesterday>
	<forecast>
		<weather>
			<date>9日星期一</date>
			<high>高温 31℃</high>
			<low>低温 17℃</low>
			<day>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>10日星期二</date>
			<high>高温 29℃</high>
			<low>低温 17℃</low>
			<day>
				<type>多云</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>多云</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>11日星期三</date>
			<high>高温 29℃</high>
			<low>低温 19℃</low>
			<day>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>12日星期四</date>
			<high>高温 33℃</high>
			<low>低温 21℃</low>
			<day>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>13日星期五</date>
			<high>高温 32℃</high>
			<low>低温 22℃</low>
			<day>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>多云</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>14日星期六</date>
			<high>高温 31℃</high>
			<low>低温 22℃</low>
			<day>
				<type>多云</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
		<weather>
			<date>15日星期日</date>
			<high>高温 31℃</high>
			<low>低温 21℃</low>
			<day>
				<type>晴</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</day>
			<night>
				<type>雷阵雨</type>
				<fengxiang>无持续风向</fengxiang>
				<fengli>微风</fengli>
			</night>
		</weather>
	</forecast>
	<zhishus>
		<zhishu>
			<name>感冒指数</name>
			<value>少发</value>
			<detail>无明显降温,感冒机率较低。</detail>
		</zhishu>
		<zhishu>
			<name>紫外线</name>
			<value>弱</value>
			<detail>辐射较弱,涂擦SPF12-15、PA+护肤品。</detail>
		</zhishu>
		<zhishu>
			<name>穿衣指数</name>
			<value>热</value>
			<detail>适合穿T恤、短薄外套等夏季服装。</detail>
		</zhishu>
		<zhishu>
			<name>舒适度</name>
			<value>较舒适</value>
			<detail>白天降雨,有些热。</detail>
		</zhishu>
		<zhishu>
			<name>洗车指数</name>
			<value>不宜</value>
			<detail>有雨,雨水和泥水会弄脏爱车。</detail>
		</zhishu>
		<zhishu>
			<name>旅游指数</name>
			<value>一般</value>
			<detail>可能有雷暴,外出请尽量避开降雨时段。</detail>
		</zhishu>
		<zhishu>
			<name>运动指数</name>
			<value>较不宜</value>
			<detail>有降水,推荐您在室内进行休闲运动。</detail>
		</zhishu>
		<element>
			<zhishu>
				<name>晨练指数</name>
				<value>较不宜</value>
				<detail>室外锻炼请携带雨具。</detail>
			</zhishu>
		</element>
		<zhishu>
			<name>约会指数</name>
			<value>较适宜</value>
			<detail>做好防雨工作,仍可有一个愉快的约会。</detail>
		</zhishu>
		<zhishu>
			<name>逛街指数</name>
			<value>较不宜</value>
			<detail>有降水,出门带雨具并注意防雷。</detail>
		</zhishu>
		<zhishu>
			<name>晾晒指数</name>
			<value>不宜</value>
			<detail>降水可能会淋湿衣物,请选择在室内晾晒。</detail>
		</zhishu>
		<zhishu>
			<name>雨伞指数</name>
			<value>带伞</value>
			<detail>有降水,短时间出行不必带伞。</detail>
		</zhishu>
	</zhishus>
</resp><!--127.0.0.1(127.0.0.1):42609 ; 127.0.0.1:8080 -->

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读