android使用xmlpull方式解析xml樣本

來源:互聯網
上載者:User

標籤:

需要解析的xml內容:

<app><dynamic><uploadPhoto>true</uploadPhoto><!-- 是否支援上傳圖片  false代表不支援,true代表支援 --><specifyFriends>true</specifyFriends><!-- 是否支援@好友  false代表不支援,true代表支援  --><sharWx>true</sharWx><!--  是否支援分享到  false代表不支援,true代表支援  --><emoji>true</emoji><!--  是否支援表情  false代表不支援,true代表支援  --><score>true</score><!--  是否支援積分  false代表不支援,true代表支援  --></dynamic><doubt><photo>true</photo><!-- 是否支援圖片   false代表不支援,true代表支援 --><supplementaryQuestion>true</supplementaryQuestion><!-- 是否支援問題補充   false代表不支援,true代表支援  --><collect>true</collect><!--  是否支援收藏   false代表不支援,true代表支援  --></doubt><courses><elective>true</elective><!-- 是否有選修課 false代表沒有,true代表允許 --></courses></app>


http封裝類:

package com.tudou.activity.work3;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.util.Log;public class HttpUtil {public static InputStream getInputStream(String path) {try {URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setDoInput(true);conn.setReadTimeout(3000);conn.setConnectTimeout(3000);conn.setRequestMethod("POST");if (conn.getResponseCode() == 200) {Log.d("mylog", "getResponseCode:" + 200);return conn.getInputStream();}} catch (IOException e) {e.printStackTrace();}return null;}}

使用xmlpull解析xml,直接用json封裝:

package com.tudou.activity.work3;import java.io.IOException;import java.io.InputStream;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;import android.util.Log;public class XmlParser {public static String getXML(InputStream inputStream, String inputEncoding) {JSONObject obj = new JSONObject();try {// Log.d("mylog", "XmlParser" + 200);XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();parser.setInput(inputStream, inputEncoding);int eventType = parser.getEventType();JSONObject obj2 = new JSONObject();JSONObject obj3 = new JSONObject();JSONObject obj4 = new JSONObject();while (eventType != XmlPullParser.END_DOCUMENT) {// Log.d("mylog", "eventType:" + eventType);switch (eventType) {case XmlPullParser.START_DOCUMENT:break;case XmlPullParser.START_TAG:Log.d("mylog", "name:" + parser.getName());if ("uploadPhoto".equals(parser.getName())) {obj2.put(parser.getName(), parser.nextText());} else if ("specifyFriends".equals(parser.getName())) {obj2.put(parser.getName(), parser.nextText());} else if ("sharWx".equals(parser.getName())) {obj2.put(parser.getName(), parser.nextText());} else if ("emoji".equals(parser.getName())) {obj2.put(parser.getName(), parser.nextText());} else if ("score".equals(parser.getName())) {obj2.put(parser.getName(), parser.nextText());} else if ("photo".equals(parser.getName())) {obj3.put(parser.getName(), parser.nextText());} else if ("supplementaryQuestion".equals(parser.getName())) {obj3.put(parser.getName(), parser.nextText());} else if ("collect".equals(parser.getName())) {obj3.put(parser.getName(), parser.nextText());} else if ("elective".equals(parser.getName())) {obj4.put(parser.getName(), parser.nextText());}break;case XmlPullParser.END_TAG:if ("app".equals(parser.getName())) {obj.put("dynamic", obj2);obj.put("doubt", obj3);obj.put("courses", obj4);}break;default:break;}eventType = parser.next();}} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (JSONException e) {e.printStackTrace();} finally {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}return obj.toString();}}

activity,此處練手不考慮效率,直接放在主線程中了:

package com.tudou.activity.work3;import com.tudou.activity.R;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class HomeWork3 extends Activity {String path = "http://software.webtrn.cn/cms/res_base/software_webtrn_cn/privacy/config/tyxl/appConfiguration.xml";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.homework3);}@Overrideprotected void onStart() {super.onStart();String result = XmlParser.getXML(HttpUtil.getInputStream(path), "utf-8");Log.d("mylog", "result:" + result);}}

順便貼一個練手的介面。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:ad="http://schemas.android.com/apk/res/android"    ad:layout_width="match_parent"    ad:layout_height="match_parent"    ad:orientation="vertical" >    <LinearLayout        ad:layout_width="match_parent"        ad:layout_height="30dp"        ad:background="@drawable/titlebar_bg"        ad:orientation="horizontal" >        <ImageView            ad:layout_width="wrap_content"            ad:layout_height="wrap_content"            ad:src="@drawable/back_44_44" />        <LinearLayout            ad:layout_width="match_parent"            ad:layout_height="30dp"            ad:gravity="center" >            <TextView                ad:layout_width="wrap_content"                ad:layout_height="wrap_content"                ad:text="本地課程"                ad:textSize="20sp" />        </LinearLayout>    </LinearLayout>    <LinearLayout        ad:layout_width="match_parent"        ad:layout_height="wrap_content"        ad:gravity="center_vertical"        ad:orientation="horizontal" >        <ImageView            ad:layout_width="wrap_content"            ad:layout_height="wrap_content"            ad:src="@drawable/image_default_195_130" />        <LinearLayout            ad:layout_width="match_parent"            ad:layout_height="wrap_content"            ad:orientation="vertical" >            <TextView                ad:layout_width="wrap_content"                ad:layout_height="wrap_content"                ad:text="公用組織的變革與發展"                ad:textSize="18sp" />            <LinearLayout                ad:layout_width="match_parent"                ad:layout_height="wrap_content"                ad:orientation="horizontal" >                <TextView                    ad:layout_width="wrap_content"                    ad:layout_height="wrap_content"                    ad:text="學習進度:"                    ad:textColor="#b6b6b6"                    ad:textSize="12sp" />                <ProgressBar                    style="?android:attr/progressBarStyleHorizontal"                    ad:layout_width="100dp"                    ad:layout_height="wrap_content"                    ad:secondaryProgress="50"                     ad:max="100"                    ad:progress="10" />                <TextView                    ad:layout_width="wrap_content"                    ad:layout_height="wrap_content"                    ad:text="10%"                    ad:textColor="#b6b6b6"                    ad:textSize="12sp" />            </LinearLayout>        </LinearLayout>    </LinearLayout>    <LinearLayout        ad:layout_width="match_parent"        ad:layout_height="wrap_content" ad:layout_marginTop="10dp"        ad:gravity="center"        ad:orientation="horizontal" >        <Button            ad:layout_width="80dp"            ad:layout_height="30dp"            ad:background="@drawable/coursedetail_startstudy_600_68"            ad:text="離線緩衝" />        <Button            ad:layout_width="80dp"            ad:layout_height="30dp"            ad:background="@drawable/coursedetail_startstudy_600_68" ad:layout_marginLeft="20dp"            ad:text="開始學習" />    </LinearLayout>    <TextView  ad:layout_width="match_parent" ad:layout_height="1dp" ad:background="#b6b6b6" ad:layout_marginTop="10dp"/></LinearLayout>


android使用xmlpull方式解析xml樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.