通过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