没想到今天晚上回到家都快十一点了,但是想想自己今天在公司给同事一起学习java的东西,还是写在博客上发表一下,供同行的朋友们参考一下吧!本人也是在学校的时候学习过java的相关东西,但是学的时候学得很肤浅。这个月因为公司的需要,我们需要开发基于android平台的智能家居控制系统软件,所有抽了一些时间去研究android的相关东西。好了,不废话了。今天我们主要与大家分享一下我们今天学习的吧。
今天主要的内容在标题中大家都应该能明白了吧,主要是讲解java操作xml的。对于java操作xml提供了多种方法,我们用的SAX解析和Dom解析xml文件。
一、SAX解析xml
SAX解析xml中主要使用的对象:SAXParserFactory、XMLReader。
SAXParserFactory factory = SAXParserFactory.newInstance();
XMLReader reader = factory.newSAXParser().getXMLReader();
InputSource is = new InputSource(MainActivity.this.getResources().getAssets().open("app.xml"));
reader.setContentHandler(new MyContentHandler());
reader.parse(is);
app.xml文件是存在于项目的assets文件夹下xml文件。当然就是我们要解析的xml文件。xml文件格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<communicatioon>
<net>
<ip>192.168.1.178</ip>
<port>4001</port>
</net>
</communicatioon>
</config>
在上文中也许大家会疑惑MyContentHandler这个对象,下面我们就来看看这个对象吧!首先给大家看这个类的实现吧。
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MyContentHandler extends DefaultHandler {
String ip, port;
String tagName;
public void startDocument() {
System.out.println("begin");
}
public void endDocument() {
System.out.println("end");
}
//uri xml的命名空间
//localName xml的标签名称
//qName xml的标签前缀
//attributes xml的标签属性
public void startElement(String uri, String localName, String qName,
Attributes attributes) {
try {
tagName = localName;
if (tagName == "net") {
System.out.println("找到了");
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
tagName = "";
if(localName.equals("net") || localName == "net") {
}
}
public void printout() {
System.out.print("ip:");
System.out.println(ip);
System.out.print("port:");
System.out.println(port);
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if(tagName.equals("ip")) {
hisname = new String(ch, start, length);
}
if(tagName.equals("port")) {
age = new String(ch, start, length);
}
}
}
看了上面这个类,也许有点眉目了吧。解析xml文件的主要内容就是在这个类中了。该对象继承了DefaultHandler这个对象,并且覆写了startDocument()、endDocument()、startElement()、endElement()、characters()这些方法。解析xml节点中的主要内容是在characters()这个方法中了。这就是利用SAX解析xml,大家细心体会吧。还有给朋友们一句忠告,学习编程不能只看,要多练,然后总结出更好的方法了。好了,同行,今天太晚了,有时间我再与大家分享自己的经验吧!