DOM方式解析xml文件查看天气
来源:互联网 发布:知乎必须用手机注册吗 编辑:程序博客网 时间:2024/05/25 13:32
1.步骤:
①创建文档解析器的工厂对象
②得到文档解析器对象
③获取输入流对象
④通过解析器的parse方法解析is对象 转换成Document对象
⑤返回的是文档的根节点
⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点
⑦得到具体的某个属性节点
2.解析元素节点、属性节点、文本节点:
3.界面搭建
界面搭建的相关代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${packageName}.${activityClass}" > <TextView android:id="@+id/tv_tq" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/tq_wendu" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/tv_tq" android:text="@string/tq_fengli" /> <TextView android:id="@+id/tv_wendu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/tv_tq" android:gravity="right" android:text="@string/wendu_default" /> <TextView android:id="@+id/tv_fengli" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_alignLeft="@+id/tv_wendu" android:layout_alignParentRight="true" android:gravity="right" android:text="@string/fengli_default" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:orientation="horizontal" android:layout_below="@+id/textView2" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="@string/city1Name" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/city2Name" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/city3Name" /> </RadioGroup></RelativeLayout>
其中,android:gravity="right"是右对齐
4.调试
初始化,获取tv_wendu(温度)、tv_fengli(风力)默认值:
int checkedId = rg.getCheckedRadioButtonId();
initData(checkedId);
相关代码:
package www.csdn.net.activityg;import java.util.List;import www.csdn.domain.City;import www.csdn.net.xml.DOMXML;import android.app.Activity;import android.os.Bundle;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.TextView;public class MainActivity extends Activity implements OnCheckedChangeListener{//声明空间对象private RadioGroup rg;private TextView tv_wendu,tv_fengli;private DOMXML domXml;private List<City> cities;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//new DOMXML().domXml();//获取rg的控件对象rg=(RadioGroup) findViewById(R.id.radioGroup1);//注册监听事件rg.setOnCheckedChangeListener(this);tv_wendu = (TextView) findViewById(R.id.tv_wendu);tv_fengli=(TextView) findViewById(R.id.tv_fengli);//解析xml文件对象的实例化domXml=new DOMXML();//调用相应的方法cities=domXml.domXml();//初始化tv_wendu、tv_feng默认值int checkedId = rg.getCheckedRadioButtonId();initData(checkedId);}@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {System.out.println(checkedId+"========="+R.id.radio0+";"+R.id.radio1);initData(checkedId);}//根据选中的id进行显示不同城市的天气private void initData(int checkedId) {City city=null;switch(checkedId){case R.id.radio0:for(City c:cities){if("北京".equals(c.getQuName())){city=c;}}break;case R.id.radio1:for(City c:cities){if("江苏".equals(c.getQuName())){city=c;}}break;case R.id.radio2:for(City c:cities){if("湖南".equals(c.getQuName())){city=c;}}break;}if(city!=null){tv_wendu.setText(city.getTem1()+"°~"+city.getTem2()+"°");tv_fengli.setText(city.getWindState());}}}
总结:
DOM解析的时候,首先要把整个文件读取完毕,装载到内存中。然后再进行解析,在解析的过程,你可以直接获取某个节点,进行操作,也可以获取根节点然后进行遍历操作,得到所有的节点内容。
DOM的优势主要表现在:易用性强,使用DOM时,将把所有的XML文档信息都存于内存中,并且遍历简单,支持XPath,增强了易用性。
DOM的缺点主要表现在:效率低,解析速度慢,内存占用量过高,对于大文件来说几乎不可能使用。另外效率低还表现在大量的消耗时间,因为使用DOM进行解析时,将为文档的每个element、attribute、processing-instrUCtion和comment都创建一个对象,这样在DOM机制中所运用的大量对象的创建和销毁无疑会影响其效率。
适用于:解析小型的xml文件
0 0
- DOM方式解析xml文件查看天气
- SAX方式解析xml文件查看天气
- DOM方式解析XML文件
- xml文件--DOM方式解析xml
- 利用pull方式进行xml文件查看天气
- Android DOM方式解析XML文件
- XML文件解析(DOM方式)
- Dom与Pull方式解析XML文件
- XML文件解析(DOM方式)
- 【JAXP】Dom方式解析XML文件
- 通过Dom方式解析xml文件
- Java之DOM方式解析XML文件
- Java 应用DOM方式解析XML文件
- DOM方式进行XML文件解析
- Java中的xml文件dom方式解析
- XML文件解析(DOM方式)
- java解析XML文件(DOM方式)
- dom方式解析xml
- example of using ajax in VisualForce page
- android任务栈
- Linux常用命令大全
- 微信封杀微软“小冰”的真相
- 《Java并发编程实战》第十五章 原子变量与非阻塞同步机制 读书笔记
- DOM方式解析xml文件查看天气
- 46. 谷歌面试题:寻找丑数
- 在windows下把tcl编译为exe程序
- poj2828Buy Tickets
- easy to understander characterise resistent
- LeetCode: Binary Tree Level Order Traversal II [107]
- Android输入法扩展之远程输入法
- 升了osx10.10后cocoapods用不了的解决方法
- 【足迹C++primer】19、构造函数再探