android下通过xstream解析xml格式信息

2024-06-06 03:58

本文主要是介绍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

 

 

这篇关于android下通过xstream解析xml格式信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035025

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java Scanner类解析与实战教程

《JavaScanner类解析与实战教程》JavaScanner类(java.util包)是文本输入解析工具,支持基本类型和字符串读取,基于Readable接口与正则分隔符实现,适用于控制台、文件输... 目录一、核心设计与工作原理1.底层依赖2.解析机制A.核心逻辑基于分隔符(delimiter)和模式匹