解析xml字符串如何做? 通过Get方式,已经获取到了xml字符串。找了下相关的资料,发现解析一个物理xml文件的例子比较多,但是我现在希望直接解析xml字符串。希望大虾能给出较详细的代码,多谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简单的xml解析:SAX解析网上资料很多的楼主百度谷歌下吧! 你这个串是指什么?如果只是一行你就自己解析,每次读取一个字,自己判断所有的标识符。如果有很多行的话,可以把数据写到文件中,在利用xml文件解析。建议可以把xml字符串写到文件中,然后通过xml的3中解析方式进行解析,这样最简单也最方便 get方式可以反回一个inputstream, 解析这个inputstream就行了。 返回是一个标准的xml格式的字符串<?xml version....><A>...</A> 一般用的最多的是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解析 效果较好 楼主,问题解决了吗,我也刚好遇到了这个问题,能不能分享一下解决方法,是不是XML的PULL方法来解决的? 宝石迷阵3 源码 andengine引擎 加急,如何查看android的API隐藏函数 android-x86大部分应用装不上有解吗? 新手提问~~~~~~~~ 全志 android4.2 内核编译命令 类型 View 中的方法 setOnClickListener(View.OnClickListener) 竖向的进度条怎样设置? android.v7 support 关于ProgressDialog??????????? Android中错误的Activity onNewIntent被调用 把handler用来service与activity通信? 安卓与PC端socket通信问题
楼主百度谷歌下吧!
<?xml version....>
<A>
...</A>
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;
}
}
可以试试