《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 -->
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。