通过Get方式,已经获取到了xml字符串。找了下相关的资料,发现解析一个物理xml文件的例子比较多,但是我现在希望直接解析xml字符串。希望大虾能给出较详细的代码,多谢。

解决方案 »

  1.   

    简单的xml解析:SAX解析网上资料很多的
    楼主百度谷歌下吧!
      

  2.   

    你这个串是指什么?如果只是一行你就自己解析,每次读取一个字,自己判断所有的标识符。如果有很多行的话,可以把数据写到文件中,在利用xml文件解析。建议可以把xml字符串写到文件中,然后通过xml的3中解析方式进行解析,这样最简单也最方便
      

  3.   

    get方式可以反回一个inputstream, 解析这个inputstream就行了。
      

  4.   

    返回是一个标准的xml格式的字符串
    <?xml version....>
    <A>
    ...</A>
      

  5.   

    一般用的最多的是SAX解析!分别找出每一行的标识符,然后根据标识符的开始与结束,来解析其内容!具体代码可以去网上搜下,好多的!
      

  6.   

    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;
              }

              
              }
    可以试试
      

  7.   

    哇,楼上的代码都贴出来了啊XMLParser解析器
      

  8.   

    一般用的都是SAX解析  效果较好   
      

  9.   

    楼主,问题解决了吗,我也刚好遇到了这个问题,能不能分享一下解决方法,是不是XML的PULL方法来解决的?