• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Android筆試總結(2)

    發表于:2013-06-03來源:Csdn作者:xyz_lmn點擊數: 標簽:Android
    (1)使用SAX讀取XML文件;它采用的是事件驅動,并不需要解析完整個文檔,速度快并且占用內存少。需要為SAX提供實現ContentHandler接口的類。 PersonDefaultHandle

      (1)使用SAX讀取XML文件;它采用的是事件驅動,并不需要解析完整個文檔,速度快并且占用內存少。需要為SAX提供實現ContentHandler接口的類。

      PersonDefaultHandler.java

      import java.util.ArrayList;

      import java.util.List;

      import org.xml.sax.Attributes;

      import org.xml.sax.SAXException;

      import org.xml.sax.helpers.DefaultHandler;

      import com.sinber.domain.Person;

      publicclass PersonDefaultHandler extends DefaultHandler {

      private List persons;

      private Person person ; //記錄當前person

      private String perTag; //記錄前一個標簽的名稱

      /**

      * 重寫父類的開始文檔方法。用于初始化

      */

      @Override

      publicvoid startDocument() throws SAXException {

      persons =new ArrayList();

      }

      @Override

      publicvoid startElement(String uri, String localName, String qName,

      Attributes attributes) throws SAXException {

      if("person".equals(localName)){

      Integer id =new Integer(attributes.getValue(0)); //取id

      person =new Person();

      person.setId(id);

      }

      perTag = localName;

      }

      /**參數:

      * ch 整個XML字符串

      * start 節點值在整個XML字符串中的索引位置

      * length 節點值的長度

      */

      @Override

      publicvoid characters(char[] ch, int start, int length)

      throws SAXException {

      if(perTag!=null){

      String data =new String(ch,start,length);

      if("name".equals(perTag)){

      person.setName(data);

      }elseif("age".equals(perTag)){

      person.setAge(new Short(data));

      }

      }

      }

      @Override

      publicvoid endElement(String uri, String localName, String qName)

      throws SAXException {

      if("person".equals(localName)){

      persons.add(person);

      person =null;

      }

      perTag =null;

      }

      public List getPersons() {

      return persons;

      }

      }

      SAXPerson.java

      import java.io.InputStream;

      import java.util.List;

      import javax.xml.parsers.SAXParser;

      import javax.xml.parsers.SAXParserFactory;

      import com.sinber.domain.Person;

      publicclass SAXPerson{

      publicstatic List getPerson() throws Exception{

      //通過類裝載器獲取文件

      InputStream inStream = SAXPersonService.class.getClassLoader().getResourceAsStream("person.xml");

      SAXParserFactory factory = SAXParserFactory.newInstance();

      SAXParser saxParser = factory.newSAXParser();

      PersonDefaultHandler handler =new PersonDefaultHandler();

      saxParser.parse(inStream, handler);

      inStream.close();

      return handler.getPersons();

      }

      }

      (2)DOM解析XML文件時,會將XML文件的所有內容讀取到內存中,然后允許您使用DOM API遍歷XML樹、檢索所需的數據。

      DOMPerson.java

      import java.io.InputStream;

      import java.util.ArrayList;

      import java.util.List;

      import javax.xml.parsers.DocumentBuilder;

      import javax.xml.parsers.DocumentBuilderFactory;

      import org.w3c.dom.Document;

      import org.w3c.dom.Element;

      import org.w3c.dom.Node;

      import org.w3c.dom.NodeList;

      import com.sinber.domain.Person;

      publicclass DOMPerson {

      publicstatic List getPerson() throws Exception{

      List pers =new ArrayList();

      InputStream inStream = SAXPersonService.class.getClassLoader().getResourceAsStream("person.xml");

      DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();

      DocumentBuilder builder = factory.newDocumentBuilder();

      Document dom = builder.parse(inStream);

      Element root = dom.getDocumentElement();

      NodeList persons = root.getElementsByTagName("person");

      for(int i=0;i

      Element personNode =(Element)persons.item(i);

      Person person =new Person();

      person.setId(new Integer(personNode.getAttribute("id")));

      NodeList childNodes = personNode.getChildNodes();

      for(int j=0;j

      Node childNode = childNodes.item(j);

      if(childNode.getNodeType()==Node.ELEMENT_NODE){

      Element element = (Element)childNode;

      if("name".equals(childNode.getNodeName())){

    原文轉自:http://blog.csdn.net/xyz_lmn/article/details/6922224

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>