MainActivity文件
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TextView show_text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button send_request = findViewById(R.id.send_request);
show_text = findViewById(R.id.show_text);
send_request.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.send_request){
setRequestWithOkHttp();
}
}
private void setRequestWithOkHttp() {
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://192.168.1.107/get_data.xml")
.build();
Response response = client.newCall(request).execute();
String str = response.body().string();
parseXMLWithSAX(str);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
private void parseXMLWithSAX(String xmlData) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader xmlReader = factory.newSAXParser().getXMLReader();
ContentHandler contentHandler = new ContentHandler();
//将实例设置到XMLReader中
xmlReader.setContentHandler(contentHandler);
//开始执行解析
xmlReader.parse(new InputSource(new StringReader(xmlData)));
}catch (Exception e){
e.printStackTrace();
}
}
}
新建java类继承自DefaultHandler
下面展示一些 内联代码片
。
public class ContentHandler extends DefaultHandler{
String nodeName;
StringBuilder id;
StringBuilder name;
StringBuilder version;
@Override
public void startDocument() throws SAXException {
super.startDocument();
id = new StringBuilder();
name = new StringBuilder();
version = new StringBuilder();
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
nodeName = localName;
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if ("app".equals(localName)){
Log.d("MainLook", "id is"+id.toString().trim());
Log.d("MainLook", "name is"+name.toString().trim());
Log.d("MainLook", "version is"+version.toString().trim());
id.setLength(0);
name.setLength(0);
version.setLength(0);
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
if ("id".equals(nodeName)){
id.append(ch, start, length);
}else if ("name".equals(nodeName)){
name.append(ch, start, length);
}else if ("version".equals(nodeName)){
version.append(ch, start, length);
}
}
}