person.setName(new String(element.getFirstChild().getNodeValue()));

  }elseif("age".equals(childNode.getNodeName())){

  person.setAge(new Short(element.getFirstChild().getNodeValue()));

  }

  }

  }

  pers.add(person);

  }

  inStream.close();

  return pers;

  }

  }

  (3)使用Pull解析器读取XML文件

  PullPerson.java

  import java.io.File;

  import java.io.FileOutputStream;

  import java.io.InputStream;

  import java.util.ArrayList;

  import java.util.List;

  import org.xmlpull.v1.XmlPullParser;

  import org.xmlpull.v1.XmlSerializer;

  import android.os.Environment;

  import android.util.Xml;

  import com.sinber.domain.Person;

  publicclass PullPerson {

  publicstaticvoid save(List persons) throws Exception{

  XmlSerializer serializer = Xml.newSerializer();

  File file =new File(Environment.getExternalStorageDirectory(),"person.xml");

  FileOutputStream outStream =new FileOutputStream(file);

  serializer.setOutput(outStream,"UTF-8");

  serializer.startDocument("UTF-8", true);

  serializer.startTag("", "persons");

  for(Person person:persons){

  serializer.startTag("", "person"); //person

  serializer.attribute("", "id", ""+person.getId());

  serializer.startTag("", "name"); //name

  serializer.text(person.getName());

  serializer.endTag("", "name"); //name

  serializer.startTag("", "age"); //age

  serializer.text(person.getAge().toString());

  serializer.endTag("", "age");//age

  serializer.endTag("", "person"); //person

  }

  serializer.endTag("", "persons");

  serializer.endDocument();

  outStream.close();

  }

  publicstatic List getPersons() throws Exception{

  List persons =null;

  Person person =null;

  XmlPullParser parser= Xml.newPullParser();

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

  parser.setInput(inStream, "UTF-8");

  int eventType = parser.getEventType(); //触发第一个事件

  while(eventType!=XmlPullParser.END_DOCUMENT){

  switch(eventType){

  case XmlPullParser.START_DOCUMENT:

  persons =new ArrayList();

  break;

  case XmlPullParser.START_TAG: //开始元素事件

  if("person".equals(parser.getName())){

  person =new Person();

  person.setId(new Integer(parser.getAttributeValue(0)));

  }elseif(person!=null){

  if("name".equals(parser.getName())){

  person.setName(parser.nextText());

  }elseif("age".equals(parser.getName())){

  person.setAge(new Short(parser.nextText()));

  }

  }

  break;

  case XmlPullParser.END_TAG: //结束元素事件

  if("person".equals(parser.getName())){

  persons.add(person);

  person =null;

  }

  break;

  default:

  break;

  }

  eventType = parser.next();

  }

  return persons;

  }

  }

  以上三种方式任选其一即可。

  9.根据自己的理解描述下Android数字签名。

  答:(1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序

  (2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证

  (3)如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。

  (4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。

  10.已知单链表的头结构head,写一个函数把这个链表逆序。

  答: 如下所示

  Node.java

  publicclass Node {

  private Integer count;

  private Node nextNode;

  public Node(){

  }

  public Node(int count){

  this.count =new Integer(count);

  }

  public Integer getCount() {

  return count;

  }

  publicvoid setCount(Integer count) {