zoukankan      html  css  js  c++  java
  • android下通过xstream解析xml格式信息

    ==========推荐============

     实例教程-----会员贡献索引贴

    http://www.eoeandroid.com/thread-1987-1-1.html

    android 图像处理滤镜系列合集

    http://www.eoeandroid.com/thread-178656-1-1.html

    分享45个android实例源码

    http://www.eoeandroid.com/thread-185986-1-1.html

    ==========帖子正文==========

    可以通过json格式向android
    http客户端传输数据,见:android下支持json的远程访问,也可以用xml格式。
      下面是一个xml文件的格式示例。

    <product>  
        <name>NetGear 614v9无线路由器</name>  
        <createTime>2009-10-27 00:00:00.0 CST</createTime>  
    </product>

    下载或者访问该xml文件:[Download not found]
      如果解析上面的xml文件呢?这里选用了xstream,网址:

    http://xstream.codehaus.org/

    xstream可以自动解析文件,并且根据xml数据实例化javabean。如果不这样,需要手工编写SAX
    API代码解析。
      首先编写了一个对应的Product的javabean:

    package com.easymorse;  
      
    import java.util.Date;  
      
    public class Product { 
        @Override
        public String toString() { 
            return “Product [createTime=" + createTime.toLocaleString() + ", name=" + name + "]“; 
        }  
      
        private String name;  
      
        public String getName() { 
            return name; 
        }  
      
        public void setName(String name) { 
            this.name = name; 
        }  
      
        public Date getCreateTime() { 
            return createTime; 
        }  
      
        public void setCreateTime(Date createTime) { 
            this.createTime = createTime; 
        }  
      
        private Date createTime; 
    }

    然后,需要类似这样调用xstream的代码(代码还是改自实现android activity之间的跳转):

    package com.easymorse;  
      
    import java.io.BufferedReader; 
    import java.io.InputStreamReader;  
      
    import org.apache.http.HttpResponse; 
    import org.apache.http.client.HttpClient; 
    import org.apache.http.client.methods.HttpGet; 
    import org.apache.http.impl.client.DefaultHttpClient;  
      
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.widget.TextView;  
      
    import com.thoughtworks.xstream.XStream;  
      
    public class NextActivity extends Activity { 
        private TextView textView; 
        @Override
        protected void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            this.setContentView(R.layout.next_activity); 
            this.textView=(TextView) this.findViewById(R.id.TextView01);  
      
            HttpClient client = new DefaultHttpClient(); 
            StringBuilder builder = new StringBuilder();  
      
            HttpGet get = new HttpGet( 
                    “http://marshal.easymorse.com/wp-content/uploads/2009/10/product2.xml”); 
            try { 
                HttpResponse response = client.execute(get); 
                BufferedReader reader = new BufferedReader(new InputStreamReader( 
                        response.getEntity().getContent())); 
                for (String s = reader.readLine(); s != null; s = reader.readLine()) { 
                    builder.append(s); 
                } 
                Log.v(“response”,”product:”+builder.toString()); 
                XStream xstream = new XStream(); 
                xstream.alias(“product”, Product.class); 
                Product product=(Product) xstream.fromXML(builder.toString()); 
                this.textView.setText(product.toString()); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 
    }

    执行NextActivity的截图:

    从服务器端返回的中文内容能够正确解码。不过,如果通过eclipse插件中的ddms日志,看到的是乱码,估计和日志或者eclipse插件默认字符集有关 。

    另外,想要使用xstream需要引入xstream包。具体方法见:在eclipse的android项目中引入第三方包。在这里xstream又依赖xpp3用于对xml解析。xpp3的网址:

    http://www.extreme.indiana.edu/xgws/xsoap/xpp/

    可以在这里下载到最新的xpp3分发包:

     http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/

    然后解压缩,将其中的xpp3_min-*.jar导入项目即可。
      或者也可以选择不依赖xpp3包,这样可以节省24K左右的空间。需要实例化XStream时:

    XStream xstream = new XStream(new DomDriver());

    另外,日期格式用:

    2012-07-23 00:00:00.0 CST

    是为了直接转型方面,如果比较复杂,需要实现xstream的转型接口做定制实现:

     http://xstream.codehaus.org/converter-tutorial.html
  • 相关阅读:
    TFS 服务器更换后工作区无法绑定
    导出你的GAC Assembly中的DLLS
    MICROSOFT REPORT VIEWER 2012之无法加载相关的dll
    查询可用的Nuget服务地址
    认识k_BackingField【转】
    EntityFramework 中生成的类加注释
    Bat命令知识[转]
    利用bat批量执行脚本文件
    SQL Server 2012 LocalDB 管理之旅
    【转】Windows环境下.NET 操作Oracle问题
  • 原文地址:https://www.cnblogs.com/vus520/p/2610007.html
Copyright © 2011-2022 走看看