Java中操作xml(一)

来源:互联网 发布:centos selinux 状态 编辑:程序博客网 时间:2024/06/14 20:48

     没想到今天晚上回到家都快十一点了,但是想想自己今天在公司给同事一起学习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,大家细心体会吧。还有给朋友们一句忠告,学习编程不能只看,要多练,然后总结出更好的方法了。好了,同行,今天太晚了,有时间我再与大家分享自己的经验吧!

 

 

原创粉丝点击