解析XML

小鱼儿 2022-06-11 01:10 384阅读 0赞

在tomcat的webapps下ROOT目录下创建xml文件,记得右键另存改编码方式为UTF-8

下面上代码:

xml部分:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:app="http://schemas.android.com/apk/res-auto"
  5. xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
  6. android:layout_height="match_parent">
  7. <Button
  8. android:layout_width="match_parent"
  9. android:layout_height="wrap_content"
  10. android:text="获取网络XML数据"
  11. android:onClick="getXMLByNet"
  12. />
  13. </LinearLayout>

java部分:

  1. package com.example.prase;
  2. import android.os.AsyncTask;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import android.util.Xml;
  7. import android.view.View;
  8. import org.xmlpull.v1.XmlPullParser;
  9. import org.xmlpull.v1.XmlPullParserException;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.net.HttpURLConnection;
  13. import java.net.MalformedURLException;
  14. import java.net.URL;
  15. public class MainActivity extends AppCompatActivity {
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. }
  21. public void getXMLByNet(View view){
  22. new MyTask().execute();
  23. }
  24. class MyTask extends AsyncTask{
  25. @Override
  26. protected Object doInBackground(Object[] params) {
  27. //获取网络XML数据
  28. String path="http://192.168.23.4:7788/students.xml";
  29. try {
  30. URL url=new URL(path);
  31. HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  32. //设置请求方式
  33. connection.setRequestMethod("GET");
  34. //设置请求超时的时间
  35. connection.setConnectTimeout(5000);
  36. //获取结果码
  37. int code=connection.getResponseCode();
  38. if(code==200){
  39. //获取数据
  40. InputStream is=connection.getInputStream();
  41. int len=0;
  42. byte[] buf=new byte[1024];
  43. StringBuffer stringBuffer=new StringBuffer();
  44. while((len=is.read(buf))!=-1){
  45. String s=new String(buf,0,len);
  46. stringBuffer.append(s);
  47. }
  48. Log.i("test",stringBuffer.toString());
  49. //解析xml
  50. XmlPullParser pullParser= Xml.newPullParser();
  51. try {
  52. pullParser.setInput(is,"UTF-8");
  53. int type=pullParser.getEventType();
  54. while(type!=XmlPullParser.END_DOCUMENT){
  55. switch (type) {
  56. case XmlPullParser.START_DOCUMENT:
  57. //获取开始标签的名字
  58. String startTagName=pullParser.getName();
  59. if("student".equals(startTagName)){
  60. //获取属性ID的值
  61. String sid = pullParser.getAttributeValue(0);
  62. }else if("sname".equals(startTagName)){
  63. String sname=pullParser.nextText();
  64. }else if("sage".equals(startTagName)){
  65. String sage=pullParser.nextText();
  66. }
  67. break;
  68. case XmlPullParser.END_TAG:
  69. break;
  70. }
  71. //细节:
  72. type=pullParser.next();
  73. }
  74. } catch (XmlPullParserException e) {
  75. e.printStackTrace();
  76. }
  77. is.close();
  78. }
  79. } catch (MalformedURLException e) {
  80. e.printStackTrace();
  81. } catch (IOException e) {
  82. e.printStackTrace();
  83. }
  84. return null;
  85. }
  86. @Override
  87. protected void onPostExecute(Object o) {
  88. super.onPostExecute(o);
  89. }
  90. }
  91. }

还需要获取网络权限:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.prase">
  3. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  4. <application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
  5. android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
  6. android:supportsRtl="true" android:theme="@style/AppTheme">
  7. <activity android:name=".MainActivity">
  8. <intent-filter>
  9. <action android:name="android.intent.action.MAIN" />
  10. <category android:name="android.intent.category.LAUNCHER" />
  11. </intent-filter>
  12. </activity>
  13. </application>
  14. </manifest>

发表评论

表情:
评论列表 (有 0 条评论,384人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XML的运用(XML解析

    一、XML文件的三种配置位置机读取方式 > Java中配置XML文件的三种配置位置机读取方式:常用的三种 1、同包下 在演式之前我们把前期演示的部分给准备好:

    相关 解析XML

    在tomcat的webapps下ROOT目录下创建xml文件,记得右键另存改编码方式为UTF-8 下面上代码: xml部分: <?xml version="1.0