view plain
  1. <span style="font-family:Arial, Verdana, sans-serif;color:#000000;"><span style="white-space: normal;"><span style="color:#000099;">
  2. </span></span></span>

DOM是用与平台无关和语言无关的方式表示XML文档的官方W3C标准,DOM是以层次结构组织的节点或信息片段的集合。DOM是基于树的,DOM相对SAX来说简单,耗内存...

本次学习目标:了解DOM解析XML ,并用DOM解析谷歌提供的天气

谷歌提供的天气接口是 http://www.google.com/ig/api?hl=zh_CN&weather=wuhan   这个接口末尾是wuhan 即 "武汉" 的拼音,依次类推,北京的查询方式是把后面拼音换成beijing就行了,这个接口是查询武汉四天的天气。

根元素(Element)是 xml_api_reply 即树的根 然后往里面扩展。

海蓝网络提供参考网站:http://www.xmhlweb.com/

我要获取节点forecas_conditions中的数据

DOM初始工作需要几个函数

DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new InputStreamReader(lianJie(strUrl) )));

然后通过Document对象解析XML,解析XML时会用到节点,并取得他的值 用到类 NodeList  ,Node. 下面开始上我的程序

http://www.xmhlweb.com/

view plain
  1. package com.study.weather;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import java.net.HttpURLConnection;
  6. import java.net.URL;
  7. import javax.xml.parsers.DocumentBuilder;
  8. import javax.xml.parsers.DocumentBuilderFactory;
  9. import javax.xml.parsers.ParserConfigurationException;
  10. import org.w3c.dom.Document;
  11. import org.w3c.dom.Element;
  12. import org.w3c.dom.Node;
  13. import org.w3c.dom.NodeList;
  14. import org.xml.sax.InputSource;
  15. import org.xml.sax.SAXException;
  16. public class Weather
  17. {
  18. public InputStream lianJie(String strUrl) throws IOException
  19. {
  20. URL url = new URL(strUrl);
  21. HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
  22. InputStream is = urlConnection.getInputStream();
  23. if(is!=null)
  24. {
  25. return is;
  26. }
  27. return null;
  28. }
  29. public void resolutionXML(String strUrl) throws ParserConfigurationException, SAXException, IOException
  30. {
  31. WeatherData wd = new WeatherData();
  32. DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
  33. DocumentBuilder builder = builderFactory.newDocumentBuilder();
  34. Document document = builder.parse(new InputSource(new InputStreamReader(lianJie(strUrl) )));
  35. // 得到xml_api_reply
  36. Element rootElement = document.getDocumentElement();
  37. System.out.println(rootElement.getNodeName());
  38. Node weatherNode =  rootElement.getElementsByTagName("weather").item(0);
  39. //      Node weatherNode = rootElement.getFirstChild();
  40. System.out.println(weatherNode.getNodeName());
  41. // 得到weather
  42. //      Node nodeWeather = weatherNode.getChildNodes();
  43. // 得到weather下节点数组
  44. NodeList nodeForecastWeathers =  weatherNode.getChildNodes();
  45. // 遍历weather下的节点
  46. for(int i=0; i<nodeForecastWeathers.getLength(); i++)
  47. {
  48. Node nodeForecastWeather = nodeForecastWeathers.item(i);
  49. // 筛选节点  找名称为 forecast_conditions 节点
  50. if(nodeForecastWeather.getNodeType()==Node.ELEMENT_NODE
  51. &&nodeForecastWeather.getNodeName().equals("forecast_conditions"))
  52. {
  53. // 建立forecast_conditions下节点数组
  54. NodeList nodeListForecastConditions =  nodeForecastWeather.getChildNodes();
  55. for(int j=0; j<nodeListForecastConditions.getLength(); j++)
  56. {
  57. //day_of_week low high condition
  58. Node data = nodeListForecastConditions.item(j);
  59. if(data.getNodeName().equals("day_of_week"))
  60. {
  61. wd.setDayOfWeek(data.getAttributes().getNamedItem("data").getNodeValue());
  62. }
  63. else if(data.getNodeName().equals("low"))
  64. {
  65. wd.setLow(data.getAttributes().item(0).getNodeValue());
  66. }
  67. else if(data.getNodeName().equals("high"))
  68. {
  69. wd.setHigh(data.getAttributes().item(0).getNodeValue());
  70. }
  71. else if(data.getNodeName().equals("condition"))
  72. {
  73. wd.setConditionData(data.getAttributes().item(0).getNodeValue());
  74. }
  75. }
  76. System.out.println(wd.printWeatheaInfo());
  77. }
  78. }
  79. }
  80. public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException
  81. {
  82. Weather weather = new Weather();
  83. weather.resolutionXML("http://www.google.com/ig/api?hl=zh_CN&weather=wuhan");
  84. }
  85. class WeatherData
  86. {
  87. String dayOfWeek;
  88. String low;
  89. String high;
  90. String conditionData;
  91. public void setDayOfWeek(String dayOfWeek)
  92. {
  93. this.dayOfWeek = dayOfWeek;
  94. }
  95. public void setLow(String low)
  96. {
  97. this.low = low;
  98. }
  99. public void setHigh(String high)
  100. {
  101. this.high = high;
  102. }
  103. public void setConditionData(String conditionData)
  104. {
  105. this.conditionData = conditionData;
  106. }
  107. public String printWeatheaInfo()
  108. {
  109. return dayOfWeek+"\n"+"温度: "+low+"~~"+high+"  \n天气情况: "+conditionData;
  110. }
  111. }
  112. }<

转载于:https://www.cnblogs.com/wxinmylife/archive/2011/11/01/2231455.html

天气预报Dom解析(转)相关推荐

  1. DOM解析和SAX解析的区别

    DOM解析和SAX解析的区别 博客分类: XML DOM SAX  DOM解析和SAX解析的区别 No 区 别 DOM解析 SAX解析 1 操作 将所有文件读取到内存中形成DOM树,如果文件量过大,则 ...

  2. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.        sax ...

  3. java dom 解析xml 例子,Java DOM解析XML的幾個例子

    Sample1: 1:新建XML文檔 books.xml,放到項目的根目錄下. xmlns="http://test.org/books"> Thinking in JAVA ...

  4. dom解析和生成XML文件

    使用这种方式解析时,需要使用node.getNodeType() == Node.ELEMENT_NODE判断结点是否为元素结点,否则会输出很多#text(结点前有空格存在的原因). 完成的XML解析 ...

  5. Java中Dom解析XML

    DOM将整个XML文件加载到内存中,并构建出节点树:应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点.属性等信息: 这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内 ...

  6. Java Dom解析xml

    Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析. Xml代码  <?xml version=&quo ...

  7. java解析xml实例_在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...

  8. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  9. [iOS] dom解析xml数据,拿到lt;gt;里面的值

    [iOS] dom解析xml数据,拿到<>里面的值 <response result="success" timestamp="1338890206&q ...

最新文章

  1. Markdown写作中的图床解决方案(基于七牛云、PicGo)
  2. Spring Boot Serverless 实战系列“部署篇” | Mall 应用
  3. TensorFlow系列(一):TensorFlow是什么
  4. java按键发出声音代码_怎么在java中给按钮添加声音?
  5. [css] 举例说明在css3中怎么实现背景裁剪?
  6. 使用PagedDataSource给Repeater、DataList增加分页
  7. [CQOI2017]小Q的表格(数论+分块)
  8. 分享100佳精美的作品集网站设计案例
  9. 【渝粤教育】国家开放大学2018年秋季 0008-21T简明现代汉语 参考试题
  10. 虚拟试衣是什么及优势在哪
  11. win10系统还原和重装系统一样吗?win10系统还原怎么操作?
  12. 中国传统节日简介、由来、习俗
  13. Winfrom 极简版贪吃蛇源码
  14. 2022年茶艺师(高级)考试题及模拟考试
  15. 区块链 重塑不良资产互信机制
  16. 牛客网前端刷题(三)
  17. 机器学习之分类器性能指标之ROC曲线、AUC值
  18. vue项目添加百度统计
  19. [渝粤教育] 浙江大学 2021秋冬管理学(施杰2) 参考 资料
  20. ngrok实现内网穿透,让家里的笔记本也能做服务器

热门文章

  1. 西宁a货翡翠,孝感a货翡翠
  2. 禅道8.2-9.2.1注入GetShell
  3. 04.React事件 方法、 React定义方法的几种方式 获取数据 改变数据 执行方法传值...
  4. Kubernetes集群(概念篇)
  5. ***使用PHP实现文件上传和多文件上传
  6. 【原创】Git删除暂存区或版本库中的文件
  7. mysql导入sql文件过大或连接超时的解决办法
  8. 视频下载比想象中容易
  9. rand.nextint()
  10. oracle 存long,ORACLE中LONG类型字段的存取