編輯:初級開發
<?XML version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>23</age> </person> <person id="22"> <name>李量</name> <age>25</age> </person> </persons>
<?XML version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>李明</name> <age>23</age> </person> <person id="22"> <name>李量</name> <age>25</age> </person> </persons>
package com.leequer.service.demo; /** * <person id="23"> <name>李明</name> <age>23</age> </person> <person id="22"> <name>李量</name> <age>25</age> </person> * @author leequer * * XML文件對應的bean */ public class Person { private Integer id; private String name; private int age; public Person () {} public Person (String name ,int age) { this.name = name; this.age = age; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { // TODO Auto-generated method stub return this.id+",name "+this.name+" age "+this.age+"\n"; } }
package com.leequer.service; import java.io.InputStream; import java.util.List; import javax.XML.parsers.SAXParser; import Javax.xml.parsers.SAXParserFactory; import org.xml.sax.XMLReader; import com.leequer.service.demo.Person; public class SaxReadxml { public static List<Person> readXml(InputStream inStream)throws Exception { SAXParserFactory spf = SAXParserFactory.newInstance(); // 初始化sax解析器 SAXParser sp = spf.newSAXParser(); // 創建sax解析器 //XMLReader xr = sp.getXMLReader();// 創建xml解析器 XMLContentHandler handler = new XMLContentHandler(); sp.parse(inStream, handler); return handler.getPersons(); } }
sp.parse(inStream, handler);
package com.leequer.service; 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.leequer.service.demo.Person; public class XMLContentHandler extends DefaultHandler { private List<Person> persons; private Person person; private String tempString; private static final String NAMESTRING = "name"; private static final String AGESTRING = "age"; private static final String PERSONSTRING = "person"; private static final String IDSTRING = "id"; public List<Person> getPersons() { return persons; } /** * sax 解析文件不帶記憶,只讀取 對xml文件中的 <person id="23"> <name>李明</name> <age>23</age> * </person> <person id="22"> <name>李量</name> <age>25</age> </person> 這部分感興趣 * 那麼這部分包含了person這個節點元素的開始和結尾,那麼就要有startElement和endElement * 這兩個方法;還有text的節點元素,(就是像節點之間的回車和空格還有標簽中的像李明這樣的文字都是文本節點 元素 * (text節點元素)那麼要解析文本節點元素就要用到characters 這個方法來獲取信息。) */ /** * 要開始讀取XML文件的時候調用的方法 * 初始化persons */ @Override public void startDocument() throws SAXException { //這裡做list的初始化工作 persons = new ArrayList<Person>(); } /** * sax 讀取到文本節點的時候調用了這個方法 */ @Override public void characters(char[] ch, int start, int length) throws SAXException { if (person != null) { String valueString = new String(ch, start, length); if (NAMESTRING.equals(tempString)) { // 如果當前解析到的節點是name 就要將name中的文本節點元素的值得到 person.setName(valueString); } else if (AGESTRING.equals(tempString)) { person.setAge(new Integer(valueString).intValue()); } } } /** * sax 讀取到元素節點的時候用到這個方法; */ @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { // 先判斷讀到的元素是否是person if (PERSONSTRING.equals(localName)) { // 如果讀到的是person這個元素 就要保存起來,保存在我們創建的那個person的類中 所以我們要new一個person類 person = new Person(); // attributes是屬性。 person.setId(new Integer(attributes.getValue(IDSTRING))); } tempString = localName; } /** * 這個方法是每次遇到結束的標簽都會執行的 並不是只遇到最後的結尾才調用 * * 讀取完畢遇到person'的結尾 就將封裝好的一個personbean保存到list中 並且清空person對象 * */ @Override public void endElement(String uri, String localName, String name) throws SAXException { if(PERSONSTRING.equals(localName)&&person!=null) { persons.add(person); person = null; } tempString = null; } }
package com.leequer.readXML; /** * 測試類 */ import java.io.InputStream; import java.util.Iterator; import Java.util.List; import com.leequer.service.SaxReadxml; import com.leequer.service.demo.Person; import android.test.AndroidTestCase; import android.util.Log; public class SaxReadxmlTest extends androidTestCase { private String PERSONSTRING = "ObjectPerson"; public void testReadXml() throws Exception {//類裝載器 InputStream inputStream = SaxReadxmlTest.class.getClassLoader().getResourceAsStream("NewFile.xml"); List <Person> personsList = SaxReadxml.readXML(inputStream); for (Iterator iterator = personsList.iterator(); iterator.hasNext();) { Person person = (Person) iterator.next(); Log.i(PERSONSTRING, person.toString()); } } }
1.下載需要用到的工具: (1)下載Java的IDE開發工具? Eclipse 到Eclipse官方網站下載Ecplise For Java EE的最新Windo
RelativeLayout關系布局:在form中的用法:@[+][package:]type:name (@id/vIEwName)在主題模式form中的用法: ?[
摘自:http://www.eoeandroid.com/thread-15411-1-1.HtmlFailed to push XXXXX.txt on emulat
隨著Android機型的不斷增多,從默認HVGA 320x480 到 WVGA 480x800 、FWVGA 480x854 以及QVGA的240x320,