Android中创建与几种解析xml的方法Word文件下载.docx
《Android中创建与几种解析xml的方法Word文件下载.docx》由会员分享,可在线阅读,更多相关《Android中创建与几种解析xml的方法Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
id="
@+id/btn1"
9.android:
10.android:
wrap_content"
11.android:
text="
创建XML文件"
12./>
13.<
14.android:
@+id/btn2"
15.android:
16.android:
17.android:
DOM解析XML"
18./>
19.<
20.android:
@+id/btn3"
21.android:
22.android:
23.android:
XmlPullParse解析XML"
24./>
25.<
TextView
26.android:
@+id/result"
27.android:
28.android:
29./>
30.<
/LinearLayout>
第三步:
修改主核心程序XmlDemo.java,代码如下:
1.packagecom.tutor.xml;
2.importjava.io.File;
3.importjava.io.FileNotFoundException;
4.importjava.io.FileOutputStream;
5.importjava.io.IOException;
6.importjavax.xml.parsers.DocumentBuilder;
7.importjavax.xml.parsers.DocumentBuilderFactory;
8.importjavax.xml.parsers.ParserConfigurationException;
9.importorg.w3c.dom.Document;
10.importorg.w3c.dom.Element;
11.importorg.w3c.dom.NodeList;
12.importorg.xml.sax.SAXException;
13.importorg.xmlpull.v1.XmlPullParser;
14.importorg.xmlpull.v1.XmlPullParserException;
15.importorg.xmlpull.v1.XmlPullParserFactory;
16.importorg.xmlpull.v1.XmlSerializer;
17.importandroid.app.Activity;
18.importandroid.os.Bundle;
19.importandroid.util.Log;
20.importandroid.util.Xml;
21.importandroid.view.View;
22.importandroid.view.View.OnClickListener;
23.importandroid.widget.Button;
24.importandroid.widget.TextView;
25.importandroid.widget.Toast;
26.publicclassXmlDemoextendsActivityimplementsOnClickListener{
27.
28.privatestaticfinalStringBOOKS_PATH="
/sdcard/books.xml"
;
29.privateButtonmButton1,mButton2,mButton3;
30.privateTextViewmTextView;
31.@Override
32.publicvoidonCreate(BundlesavedInstanceState){
33.super.onCreate(savedInstanceState);
34.setContentView(R.layout.main);
35.setupViews();
36.}
37.//初始化工作
38.privatevoidsetupViews(){
39.mTextView=(TextView)findViewById(R.id.result);
40.mButton1=(Button)findViewById(R.id.btn1);
41.mButton2=(Button)findViewById(R.id.btn2);
42.mButton3=(Button)findViewById(R.id.btn3);
43.mButton1.setOnClickListener(this);
44.mButton2.setOnClickListener(this);
45.mButton3.setOnClickListener(this);
46.}
47.//创建xml文件
48.privatevoidcreateXmlFile(){
49.FilelinceseFile=newFile(BOOKS_PATH);
50.try{
51.linceseFile.createNewFile();
52.}catch(IOExceptione){
53.Log.e("
IOException"
"
exceptionincreateNewFile()method"
);
54.}
55.FileOutputStreamfileos=null;
56.try{
57.fileos=newFileOutputStream(linceseFile);
58.}catch(FileNotFoundExceptione){
59.Log.e("
FileNotFoundException"
can'
tcreateFileOutputStream"
60.}
61.XmlSerializerserializer=Xml.newSerializer();
62.try{
63.serializer.setOutput(fileos,"
UTF-8"
64.serializer.startDocument(null,true);
65.serializer.startTag(null,"
books"
66.for(inti=0;
i<
3;
i++){
67.serializer.startTag(null,"
book"
68.serializer.startTag(null,"
bookname"
69.serializer.text("
Android教程"
+i);
70.serializer.endTag(null,"
71.serializer.startTag(null,"
bookauthor"
72.serializer.text("
Frankie"
73.serializer.endTag(null,"
74.serializer.endTag(null,"
75.}
76.
77.serializer.endTag(null,"
78.serializer.endDocument();
79.serializer.flush();
80.fileos.close();
81.}catch(Exceptione){
82.Log.e("
Exception"
"
erroroccurredwhilecreatingxmlfile"
83.}
84.Toast.makeText(getApplicationContext(),"
创建xml文件成功!
"
Toast.LENGTH_SHORT).show();
85.}
86.//dom解析xml文件
87.privatevoiddomParseXML(){
88.Filefile=newFile(BOOKS_PATH);
89.DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
90.DocumentBuilderdb=null;
91.try{
92.db=dbf.newDocumentBuilder();
93.}catch(ParserConfigurationExceptione){
94.e.printStackTrace();
95.}
96.Documentdoc=null;
97.try{
98.doc=db.parse(file);
99.}catch(SAXExceptione){
100.e.printStackTrace();
101.}catch(IOExceptione){
102.e.printStackTrace();
103.}
104.Elementroot=doc.getDocumentElement();
105.NodeListbooks=root.getElementsByTagName("
106.Stringres="
本结果是通过dom解析:
+"
/n"
107.for(inti=0;
books.getLength();
i++){
108.Elementbook=(Element)books.item(i);
109.Elementbookname=(Element)book.getElementsByTagName("
).item(0);
110.Elementbookauthor=(Element)book.getElementsByTagName("
111.res+="
书名:
"
+bookname.getFirstChild().getNodeValue()+"
+
112."
作者:
+bookauthor.getFirstChild().getNodeValue()+"
113.}
114.
115.mTextView.setText(res);
116.}
117.
118.//xmlPullParser解析xml文件
119.privatevoidxmlPullParseXML(){
120.Stringres="
本结果是通过XmlPullParse解析:
121.try{
122.XmlPullParserFactoryfactory=XmlPullParserFactory.newInstance();
123.XmlPullParserxmlPullParser=factory.newPullParser();
124.
125.xmlPullParser.setInput(Thread.currentThread().getContextClassLoader()
126..getResourceAsStream(BOOKS_PATH),"
127.
128.inteventType=xmlPullParser.getEventType();
129.
130.try{
131.while(eventType!
=XmlPullParser.END_DOCUMENT){
132.StringnodeName=xmlPullParser.getName();
133.switch(eventType){
134.caseXmlPullParser.START_TAG:
135.if("
.equals(nodeName)){
136.res+="
+xmlPullParser.nextText()+"
137.}elseif("
138.res+="
139.}
140.break;
141.default:
142.break;
143.}
144.eventType=xmlPullParser.next();
145.}
146.}catch(IOExceptione){
147.e.printStackTrace();
148.}
149.}catch(XmlPullParserExceptione){
150.e.printStackTrace();
151.}
152.
153.mTextView.setText(res);
154.}
155.//按钮事件响应
156.publicvoidonClick(Viewv){
157.if(v==mButton1){
158.createXmlFile();
159.}elseif(v==mButton2){
160.domParseXML();
161.}elseif(v==mButton3){
162.xmlPullParseXML();
163.}
164.}
165.}
第四步:
由于我们在Sd卡上新建了文件,需要增加权限,如下代码(第16行):
manifestxmlns:
3.package="
com.tutor.xml"
versionCode="
1"
versionName="
6.<
applicationandroid:
icon="
@drawable/icon"
android:
label="
@string/app_name"
activityandroid:
name="
.XmlDemo"
9.<
intent-filter>
10.<
actionandroid:
android.intent.action.MAIN"
/>
11.<
categoryandroid:
android.intent.category.LAUNCHER"
12.<
/intent-filter>
/activity>
14.<
/application>
15.<
uses-sdkandroid:
minSdkVersion="
7"
16.<
uses-permissionandroid:
android.permission.WRITE_EXTERNAL_STORAGE"
17.<
/manifest>
第五步:
运行上述工程,查看效果:
启动首界面:
点击创建XML文件按钮,生成books.xml文件
books.xml内容如下:
xmlversion='
1.0'
encoding='
UTF-8'
standalone='
yes'
?
books>
3.<
book>
4.<
bookname>
Android教程0<
/bookname>
5.<
bookauthor>
Frankie0<
/bookauthor>
/book>
8.<
Android教程1<
Frankie1<
Android教程2<
Frankie2<
/books>
点击DOM解析XML按钮:
点击XmlPullParse解析XML按钮:
Ok~今天就先讲到这里。
thx~