解析一个XML文件: XML解析器
2013-10-14 20:55
344 查看
解析一个XML文件: XML解析器
public class MainActivity extends Activity implements OnClickListener{
[align=left]
[/align]
private
Button bt;
private
SmsBean sms;
[align=left] private List<SmsBean> smsList;[/align]
[align=left] [/align]
[align=left] @Override[/align]
protected void onCreate(Bundle
savedInstanceState) {
[align=left] super.onCreate(savedInstanceState);[/align]
[align=left] setContentView(R.layout. activity_main);[/align]
[align=left] [/align]
bt=(Button)
findViewById(R.id. bt);
[align=left] [/align]
[align=left] bt.setOnClickListener( this);[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left] /**[/align]
[align=left] * 解析 xml文件的方法[/align]
[align=left] * @param v[/align]
[align=left] */[/align]
[align=left] @Override[/align]
public void onClick(View
v) {
[align=left] try {[/align]
[align=left] //创建pull解析器[/align]
[align=left] XmlPullParser parser = Xml. newPullParser();[/align]
[align=left] [/align]
[align=left] //pull解析器配置[/align]
[align=left] FileInputStream fis= new FileInputStream(Environment.getExternalStorageDirectory().getPath()+ "/sms.xml");[/align]
[align=left] parser.setInput(fis, "UTF-8");[/align]
[align=left] [/align]
[align=left] //开始解析,获事件的类型[/align]
int eventType
= parser.getEventType();
[align=left] while(eventType!=XmlPullParser. END_DOCUMENT){ //当事件类型不等于END_DOCUMENT时,继续解析[/align]
[align=left] [/align]
[align=left] String tageName=parser.getName(); //得到解析节点的名称[/align]
[align=left] [/align]
switch (eventType)
{
[align=left] case XmlPullParser. START_TAG: //当解析的事件是开始标签时[/align]
[align=left] if( "Sms".equals(tageName)){[/align]
[align=left] smsList= new ArrayList<SmsBean>();[/align]
[align=left] }[/align]
[align=left] else if( "sms".equals(tageName)){[/align]
[align=left] sms= new SmsBean();[/align]
[align=left] sms.setName(parser.getAttributeValue(0));[/align]
[align=left] }[/align]
[align=left] else if( "address".equals(tageName)){[/align]
[align=left] sms.setStress(parser.nextText());[/align]
[align=left] }[/align]
[align=left] else if( "content".equals(tageName)){[/align]
[align=left] sms.setContent(parser.nextText());[/align]
[align=left] }[/align]
[align=left] else if( "tate".equals(tageName)){[/align]
[align=left] sms.setDate(Integer. parseInt(parser.nextText()));[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] break;[/align]
[align=left]
[/align]
[align=left] case XmlPullParser. END_TAG:[/align]
[align=left] if( "Sms".equals(tageName)){[/align]
[align=left] smsList.add( sms);[/align]
[align=left] sms= null;[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] //继续往下解析[/align]
[align=left] eventType=parser.next();[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
} catch (Exception
e) {
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] sms.toString();[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]--------------------------------------------------------------------------------------------------[/align]
[align=left]
[/align]
[align=left]解析网络上xml文件和json文件:[/align]
[align=left]
[/align]
public class PersonService
{
[align=left]
[/align]
public List<Person>
getPersonsByXML() throws Exception {
[align=left] URL url = new URL("http://192.168.1.100:8080/05.Web/persons.xml" );[/align]
[align=left] HttpURLConnection conn = (HttpURLConnection) url.openConnection();[/align]
[align=left] conn.setConnectTimeout(3000);[/align]
[align=left] [/align]
int code
= conn.getResponseCode();
if (code
== 200) {
[align=left] InputStream in = conn.getInputStream();[/align]
[align=left] return parseXML(in);[/align]
[align=left] }[/align]
throw new RuntimeException( "网络异常:
" + code);
[align=left] }[/align]
[align=left]
[/align]
[align=left] /**[/align]
[align=left] * 解析网络上的 xml文件[/align]
[align=left] * @param in[/align]
[align=left] * @return[/align]
[align=left] * @throws Exception[/align]
[align=left] */[/align]
private List<Person>
parseXML(InputStream in) throws Exception
{
[align=left] XmlPullParser parser = Xml. newPullParser();[/align]
[align=left] parser.setInput(in, "UTF-8");[/align]
[align=left] [/align]
[align=left] List<Person> list = new ArrayList<Person>();[/align]
[align=left] Person p = null;[/align]
[align=left] [/align]
for ( int type
= parser.getEventType(); type != XmlPullParser.END_DOCUMENT; type = parser.next())
{
if (type
== XmlPullParser. START_TAG) {
if ( "person".equals(parser.getName()))
{
[align=left] p = new Person();[/align]
[align=left] String id = parser.getAttributeValue(0);[/align]
[align=left] p.setId(Integer. parseInt(id));[/align]
[align=left] list.add(p);[/align]
} else if ( "name".equals(parser.getName()))
{
[align=left] String name = parser.nextText();[/align]
[align=left] p.setName(name);[/align]
} else if ( "age".equals(parser.getName()))
{
[align=left] String age = parser.nextText();[/align]
[align=left] p.setAge(Integer. parseInt(age));[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return list;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left] /**[/align]
[align=left] * 解析网络上的 json文件[/align]
[align=left] * @return[/align]
[align=left] * @throws Exception[/align]
[align=left] */[/align]
public List<Person>
getPersonsByJSON() throws Exception {
[align=left] URL url = new URL("http://192.168.1.100:8080/05.Web/persons.js" );[/align]
[align=left] HttpURLConnection conn = (HttpURLConnection) url.openConnection();[/align]
[align=left] conn.setConnectTimeout(3000);[/align]
[align=left] [/align]
int code
= conn.getResponseCode();
if (code
== 200) {
[align=left] InputStream in = conn.getInputStream();[/align]
[align=left] return parseJSON(in);[/align]
[align=left] }[/align]
throw new RuntimeException( "网络异常:
" + code);
[align=left] }[/align]
[align=left]
[/align]
private List<Person>
parseJSON(InputStream in) throws Exception
{
[align=left] ByteArrayOutputStream out = new ByteArrayOutputStream();[/align]
byte[]
buffer = new byte[8192];
[align=left] int length;[/align]
while ((length
= in.read(buffer)) != -1)
[align=left] out.write(buffer, 0, length);[/align]
[align=left] in.close();[/align]
[align=left] out.close();[/align]
[align=left] [/align]
[align=left] String json = new String(out.toByteArray());[/align]
[align=left] List<Person> list = new ArrayList<Person>();[/align]
JSONArray arr = new JSONArray(json); //
把String封装成JSON数组
for ( int i
= 0; i < arr.length(); i++) { // 遍历JSON数组
JSONObject obj = arr.getJSONObject(i); //
获取每个JSON对象
[align=left] Person p = new Person(); [/align]
p.setId(obj.getInt( "id")); //
从JSON对象中获取"id"字段的值
[align=left] p.setName(obj.getString( "name"));[/align]
[align=left] p.setAge(obj.getInt( "age"));[/align]
[align=left] list.add(p);[/align]
[align=left] }[/align]
[align=left] return list;[/align]
[align=left] }[/align]
[align=left]
[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
相关文章推荐
- php解析xml文件到一个数组
- android下解析.plist配置文件的xml解析器
- simpleXML怎样解析一个xml文件,并对xml进行增删改查 过程
- 大XML文件解析入库的一个方法 推荐
- Java SAX解析器解析XML配置文件
- Android向本地写入一个XML文件和解析XML文件
- J2ME 中 KXML2 解析器解析 xml 文件源代码
- 35-002-1 struts前期之 通过JAVA反射机制及XML配置文件解析自定义一个MVC的简单框架
- 一个简单的xml类,可以解析和生成xml文件数据
- 关于Dom4j解析XML文件,外带上一个简单工具
- Layout inflation在Android环境中是一个专业术语,用于表示某个XML资源布局文件被解析并转化成为一个层级的View对象的过程。
- 解析一个XML 4000 文件,并且读出图片(xml文件无属性值)
- Pull解析器解析XML文件
- 发布一个biztalk 解析Excel文件到xml消息的管道组件
- 解析一个XML文件-Yahoo天气(xml文件有属性值)
- 大XML文件解析入库的一个方法
- Android上解析.plist配置文件的xml解析器
- Java SAX解析器解析XML配置文件,连接数据库
- 解析 XML 文件 - 一个跨浏览器的实例
- 一个模拟页面操作,解析xml输出,生成CSV文件的ruby程­序