首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

解析xml字符串怎么做

2012-05-02 
解析xml字符串如何做?通过Get方式,已经获取到了xml字符串。找了下相关的资料,发现解析一个物理xml文件的例

解析xml字符串如何做?
通过Get方式,已经获取到了xml字符串。找了下相关的资料,发现解析一个物理xml文件的例子比较多,但是我现在希望直接解析xml字符串。

希望大虾能给出较详细的代码,多谢。

[解决办法]
简单的xml解析:SAX解析

网上资料很多的
楼主百度谷歌下吧!
[解决办法]
你这个串是指什么?如果只是一行你就自己解析,每次读取一个字,自己判断所有的标识符。如果有很多行的话,可以把数据写到文件中,在利用xml文件解析。

建议可以把xml字符串写到文件中,然后通过xml的3中解析方式进行解析,这样最简单也最方便
[解决办法]
get方式可以反回一个inputstream, 解析这个inputstream就行了。
[解决办法]
XmlPUllParser解析
[解决办法]
一般用的最多的是SAX解析!分别找出每一行的标识符,然后根据标识符的开始与结束,来解析其内容!具体代码可以去网上搜下,好多的!
[解决办法]
package com.zhang;

import java.io.StringReader;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class XMLActivity extends Activity {
/** Called when the activity is first created. */
private Button parsebutton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
parsebutton=(Button)findViewById(R.id.button1);
parsebutton.setOnClickListener(new parsebuttonListener());
}
class parsebuttonListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
HttpDownloader hd=new HttpDownloader();
String resultstr =hd.download("http://127.0.0.1:8080"); //所有内容放resultstr字符串中
System.out.println("resultstr");
try{
SAXParserFactory factory=SAXParserFactory.newInstance();
XMLReader reader=factory.newSAXParser().getXMLReader();
reader.setContentHandler(new MyContentHander());
reader.parse(new InputSource(new StringReader(resultstr)));
}catch(Exception e){
e.printStackTrace();
}
}

}
}

















package com.zhang;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MyContentHander extends DefaultHandler {
String name,address,money,sex,status;
String tagname;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
if(tagname.equals(name))
{
name=new String(ch, start, length);
}else if(tagname.equals(address))
{
address=new String(ch, start, length);
}else if(tagname.equals(money))
{
money=new String(ch, start, length);
}else if(tagname.equals(sex))
{
sex=new String(ch, start, length);
}else if(tagname.equals(status))
{
status=new String(ch, start, length);
}
}

@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
System.out.println("------startDocument----------");
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub


super.endDocument();
System.out.println("------endDocument------------");
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
tagname=localName;
if(localName.equals("worker"))
{
for(int i=0;i<attributes.getLength();i++)
{
System.out.println(attributes.getLocalName(i)+"="+attributes.getValue(i));
}
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
if(localName.equals("worker"))
{
this.printout();
}
}
private void printout() {
// TODO Auto-generated method stub
System.out.print("name--");
System.out.println(name);
System.out.print("address--");
System.out.println(address);
System.out.print("money--");
System.out.println(money);
System.out.print("sex--");
System.out.println(sex);
System.out.print("status--");
System.out.println(status);
}
}










package com.extend;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HttpDownLoader {

private URL url=null;

public String Download (String urlstr){ //只能下载文本格式
StringBuffer sb=new StringBuffer();
String line=null;
BufferedReader buffer=null;

try{
url=new URL(urlstr);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
buffer=new BufferedReader(new InputStreamReader(conn.getInputStream()));
 
while(buffer.readLine()!=null){
sb.append(line);
}
}catch(Exception e){
e.printStackTrace();
} finally{
try{
buffer.close();
}catch(Exception e){
e.printStackTrace();
}
}
 
return sb.toString();
 
}
public int downfile(String urlstr,String path,String filename){
InputStream in=null;
try{
fileutils fu=new fileutils();
if(fu.isfileexits(path+filename)){
return 1;
}
else{
in=getInputStreamFromUrl(urlstr);
File refile=fu.writetosdcard(path, filename, in);
if(refile==null){
return -1;
}
}
}catch(Exception e){
e.printStackTrace();
return -1;
}finally{
try{
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
return 0;
 
}
public InputStream getInputStreamFromUrl(String urlstr)throws MalformedURLException,IOException{
url=new URL(urlstr);
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
InputStream in=conn.getInputStream();
return in;
}

 
}
可以试试
------解决方案--------------------


哇,楼上的代码都贴出来了啊。。。

XMLParser解析器
[解决办法]
一般用的都是SAX解析 效果较好

热点排行
Bad Request.