<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_业精于勤，荒于嬉；行成于思，毁于随</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/66907/rss</id><updated>2012-05-31T09:53:59Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/66907/rss"/><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/31/2528816.html</id><title type="text">Android XML解析并将数据存放在数据库中</title><summary type="text">文件下载地址: http://files.cnblogs.com/hnrainll/XmlSQL.zip</summary><published>2012-05-31T09:26:00Z</published><updated>2012-05-31T09:26:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2528816.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2528816.html"/><content type="html">&lt;p&gt;文件下载地址:&amp;nbsp;&amp;nbsp; http://files.cnblogs.com/hnrainll/XmlSQL.zip&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2528816.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2528816.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/31/2527326.html</id><title type="text">Linux系统IP路由基础[第1部分]</title><summary type="text">也许你知道如何在Linux系统上用命令netstat或route来查找（甚至是增加/删除）已经存在的路由。但是在你做这些操作的时候你可能并不知道IP路由是如何工作的。本文将帮助你理解IP路由的原理，以及它是如何工作的。IP 路由涉及到IP数据报文的转发。如果主机与目的主机直接相连，那么主机可以直接发送IP报文到目的主机，这个过程比较简单。例如，通过点对点的链接或通过 网络共享。如果主机与目的主机没有直接相连，那么主机会将IP报文发送给默认的路由器，然后由路由器来决定往哪发送IP报文。 IP路由涉及到IP数据报文的转发。如果主机与目的主机直接相连，那么主机可以直接发送IP报文到目的主机，这个过程</summary><published>2012-05-31T00:23:00Z</published><updated>2012-05-31T00:23:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2527326.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2527326.html"/><content type="html">&lt;p&gt;&lt;span style="font-weight: bold;"&gt;也许你知道如何在Linux系统上用命令netstat或route来查找（甚至是增加/删除）已经存在的路由。但是在你做这些操作的时候你可能并不知道IP路由是如何工作的。本文将帮助你理解IP路由的原理，以及它是如何工作的。&lt;/span&gt;IP 路由涉及到IP数据报文的转发。如果主机与目的主机直接相连，那么主机可以直接发送IP报文到目的主机，这个过程比较简单。例如，通过点对点的链接或通过 网络共享。如果主机与目的主机没有直接相连，那么主机会将IP报文发送给默认的路由器，然后由路由器来决定往哪发送IP报文。 IP路由涉及到IP数据报文的转发。如果主机与目的主机直接相连，那么主机可以直接发送IP报文到目的主机，这个过程比较简单。例如，通过点对 点的链接或通过网络共享。如果主机与目的主机没有直接相连，那么主机会将IP报文发送给默认的路由器，然后由路由器来决定往哪发送IP报文。&lt;br /&gt;&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;路由原理&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;一个普通的主机与路由器之间的根本区别在于，主机不会将一个报文从一个接口转发到另一个接口，而路由器可以转发报文。&lt;br /&gt;&lt;br /&gt;如今，大多数的多用户系统都可以被配置，从而被当作路由器来用。因此，一个普通路由算法可以被用在路由器上，同样也可以用在一台普通主机上。当一台主机可以用作路由器时，我们通常说这台主机嵌入了路由器的功能。这种具备嵌入路由器功能的主机平常不会转发报文，除非我们对它进行了配置，使它开启这种功能。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.jobbole.com/wp-content/uploads/2012/05/router.jpg"&gt;&lt;img class="aligncenter size-medium wp-image-19239" style="margin-top: 5px ! important; margin-right: auto; margin-bottom: 0px; margin-left: auto; padding: 5px; border-style: solid; clear: both; display: block; border-radius: 6px 6px 6px 6px; border-color: #d4d4d4; border-width: 1px;" title="Introduction to Linux IP Routing Fundamentals" src="http://img.cnbeta.com/newsimg/120531/06531402102534103.jpg" alt="Introduction to Linux IP Routing Fundamentals" width="533" height="342" /&gt;&lt;/a&gt;&lt;br /&gt;IP层维护着一张路由表，当收到数据报文时，它用此表来决策接下来应该做什么操作。当从网络侧接收到数据报文时，IP层首先会检查报文的IP地址是否是主机自身的地址相同。&lt;br /&gt;&lt;br /&gt;如果数据报文中的IP地址是主机自身的地址，那么报文将被发送到传输层相应的协议中去。如果报文中的IP地址不是主机自身的地址，并且主机配置了具备路由的功能，那么报文将被转发；否则，报文就被丢弃。&lt;br /&gt;&lt;br /&gt;路由表中的数据一般是以条目形式存在。一个典型的路由表条目包含以下主要的条目项：&lt;br /&gt;&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;● 目的IP&lt;/strong&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;地址：&lt;/strong&gt;此字段表示目标的IP地址。这个IP地址可以是某一台主机的地址，也可以是一个网络地址。如果这个条目包含的是一个主机地址，那么它的主机ID标记为非零；如果这个条目包含的是一个网络地址，那么它的主机ID被标记为零。&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;●&amp;nbsp;&lt;/strong&gt;下一个路由器的IP&lt;/strong&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;地址：&lt;/strong&gt;为什么我们使用&amp;ldquo;下一个&amp;rdquo;的说法，是因为下一个路由器并不总是最后的目的路由器，但它很可能是一个中间路由器。条目给出下一个路由器的地址是用来转发从相应接口收到的IP数据报文。&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;●&amp;nbsp;&lt;/strong&gt;标志：&lt;/strong&gt;这个字段提供了另一组重要信息，如目的IP地址（之前提到的）是一个主机地址还是一个网络地址。此外，从标志中可以得知下一个路由器（之前提到的）真的是一个路由器还是一个直接相连的接口。&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;●&amp;nbsp;&lt;/strong&gt;网络接口规范：&lt;/strong&gt;一些数据报文的网络接口规范，这个规范跟随报文一起传播。&lt;br /&gt;&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;基本的路由是如何工作的？&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;因此，如果我们现在想简单而形象地描述路由过程，我们将会看到：一旦主机（被配置成具备路由功能）的IP层接收到从网络侧来的数据报文，它将核实数据包中的目的IP地址，如果此IP不是主机的IP地址，那么包将通过路由表转发。&lt;br /&gt;&lt;br /&gt;如果任何条目的第一个字段完全匹配目的IP地址（主机）或部分匹配目的IP地址（网络），那么它将指示下一个路由器的IP地址。这是一个重要的信息，因为这些信息直接告诉主机（具备路由功能的）数据包应该转发到哪一个&amp;ldquo;下一个路由器&amp;rdquo;去。而条目中所有其它的字段将提供更多辅助的信息来为路由转发做决定。&lt;br /&gt;&lt;br /&gt;在上一段中我们对路由转发过程建立了基本的了解，但如果我们试图深入了解更多的东西，就必须看看以下关于路由表算法的一些详细信息。&lt;br /&gt;&lt;br /&gt;●&amp;nbsp;首先，路由表会去搜索一个&amp;ldquo;目的IP地址&amp;rdquo;字段与数据报文中目的IP地址完全相同的条目。这就意味着IP地址的主机ID与网络ID完全的匹配。如果找到，则数据包被发送到相应接口或中间路由器。&lt;br /&gt;●&amp;nbsp;如果没有找到一个完全的匹配IP，那么就接着搜索相匹配的网络ID。如果找到，那么该数据报文会被转发到指定的路由器。所以我们看到，这个网络上的所有主机都通过这个路由表中的单个（这个）条目来管理。&lt;br /&gt;●&amp;nbsp;如果上述两个条件都不匹配，那么该数据报文将转发到一个&amp;ldquo;默认路由器&amp;rdquo;。&lt;br /&gt;●&amp;nbsp;如果上述步骤失败，即没有默认路由器，那么该数据报文最终无法被转发。任何无法投递的数据报文都将产生一个&lt;strong style="margin: 0px; padding: 0px;"&gt;ICMP&lt;/strong&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;主机不可达&lt;/strong&gt;或&lt;strong style="margin: 0px; padding: 0px;"&gt;ICMP&lt;/strong&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;网络不可达&lt;/strong&gt;的错误，并将此错误返回给生成此数据报文的应用程序。&lt;br /&gt;&lt;br /&gt;有时人们会问，为什么路由表中会有两种类型的条目？有了更精确的主机条目为什么还需要网络相关的条目？嗯&amp;hellip;在路由表中包含与网络相关的路由条目是一个很大的优点。其优点在于，拥有一个与完整网络相关的条目，能够避免包含此网络中所有单独的主机条目（这个数据量非常巨大）。这使得路由表的大小降到一个可收受的数量级，这样就非常好。&lt;br /&gt;&lt;br /&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;查看路由表信息的命令&lt;/strong&gt;&lt;br /&gt;你可以使用netstat命令查看路由表信息，如下所示：&lt;br /&gt;$ netstat -rnKernel IP routing tableDestination&amp;nbsp; Gateway&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Genmask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Flags&amp;nbsp;&amp;nbsp; MSS Window&amp;nbsp; irtt Iface192.168.2.0&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.255.0&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; eth0169.254.0.0&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 255.255.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; U&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; eth00.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 192.168.2.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.0.0.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; eth0其输出提供目的IP地址和网关相关的详细信息。标志&amp;ldquo;U&amp;rdquo;表明该路由器可达；&amp;ldquo;G&amp;rdquo;表明该路由器与一个网关（路由器）相连。如果这个标志没有被设置，那么我们可以认为主机与目标是直接相连的。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;英文原文：&amp;nbsp;&lt;a href="http://www.thegeekstuff.com/2012/04/ip-routing-intro/?utm_source=feedburner&amp;amp;amp;amp;utm_medium=feed&amp;amp;amp;amp;utm_campaign=Feed%3A+TheGeekStuff+%28The+Geek+Stuff%29&amp;amp;amp;amp;utm_content=Google+Reader"&gt;Himanshu Arora&lt;/a&gt;&amp;nbsp;&amp;nbsp; 编译：&lt;a href="http://www.jobbole.com/"&gt;伯乐&lt;/a&gt;在线 &amp;ndash;&amp;nbsp;&lt;a href="http://blog.jobbole.com/19235/"&gt;肖翔&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2527326.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/31/2527326.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525982.html</id><title type="text">Android中解析XML</title><summary type="text">XML在各种开发中都广泛应用，Android也不例外。作为承载数据的一个重要角色，如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。在Android中，常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器，下面，我将一一向大家详细介绍。SAX解析器：SAX(Simple API for XML)解析器是一种基于事件的解析器，它的核心是事件处理模式，主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后，调用事件处理器相应的 处理方法，一个事件就可以得到处理。在事件源调用事件处理器中特定方法的</summary><published>2012-05-30T03:18:00Z</published><updated>2012-05-30T03:18:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525982.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525982.html"/><content type="html">&lt;div id="article_content" class="article_content"&gt;&lt;p&gt;XML在各种开发中都广泛应用，Android也不例外。作为承载数据的一个重要角色，如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android平台下几种常见的XML解析和创建的方法。&lt;/p&gt;&lt;p&gt;在Android中，常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器，下面，我将一一向大家详细介绍。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;SAX解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SAX(Simple API for XML)解析器是一种基于事件的解析器，它的核心是事件处理模式，主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后，调用事件处理器相应的 处理方法，一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候，还要传递给事件处理器相应事件的状态信息，这样事件处理器才能够根据提供的 事件信息来决定自己的行为。&lt;/p&gt;&lt;p&gt;SAX解析器的优点是解析速度快，占用内存少。非常适合在Android移动设备中使用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DOM解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;DOM是基于树形结构的的节点或信息片段的集合，允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构，然后才可以检索和更新节点信息。&lt;/p&gt;&lt;p&gt;由于DOM在内存中以树形结构存放，因此检索和更新效率会更高。但是对于特别大的文档，解析和加载整个文档将会很耗资源。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PULL解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;PULL解析器的运行方式和SAX类似，都是基于事件的模式。不同的是，在PULL解析过程中，我们需要自己获取产生的事件然后做相应的操作，而不 像SAX那样由处理器触发一种事件的方法，执行我们的代码。PULL解析器小巧轻便，解析速度快，简单易用，非常适合在Android移动设备中使 用，Android系统内部在解析各种XML时也是用PULL解析器。&lt;/p&gt;&lt;p&gt;以上三种解析器，都是非常实用的解析器，我将会一一介绍。我们将会使用这三种解析技术完成一项共同的任务。&lt;/p&gt;&lt;p&gt;我们新建一个项目，项目结构如下：&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_1305196366n87z.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;我会在项目的assets目录中放置一个XML文档books.xml，内容如下：&lt;/p&gt;&lt;div class="dp-highlighter bg_xhtml"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[xhtml]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="tag-name"&gt;xml&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1.0"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;encoding&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"utf-8"&lt;/span&gt;&lt;span class="tag"&gt;?&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;books&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;1001&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Thinking&amp;nbsp;In&amp;nbsp;Java&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;80.00&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;1002&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Core&amp;nbsp;Java&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;90.00&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;1003&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;id&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Hello,&amp;nbsp;Andriod&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;100.00&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;books&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;然后我们分别使用以上三种解析技术解析文档，得到一个List&amp;lt;Book&amp;gt;的对象，先来看一下Book.java的代码：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.model;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;Book&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;float&lt;/span&gt;&lt;span&gt;&amp;nbsp;price;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;getId()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setId(&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;id)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.id&amp;nbsp;=&amp;nbsp;id;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getName()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setName(String&amp;nbsp;name)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.name&amp;nbsp;=&amp;nbsp;name;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;float&lt;/span&gt;&lt;span&gt;&amp;nbsp;getPrice()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;price;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setPrice(&lt;/span&gt;&lt;span class="keyword"&gt;float&lt;/span&gt;&lt;span&gt;&amp;nbsp;price)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;this&lt;/span&gt;&lt;span&gt;.price&amp;nbsp;=&amp;nbsp;price;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;toString()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"id:"&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;id&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;",&amp;nbsp;name:"&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;",&amp;nbsp;price:"&lt;/span&gt;&lt;span&gt;&amp;nbsp;+&amp;nbsp;price;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;最后，我们还要把这个集合对象中的数据生成一个新的XML文档，如图：&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_1305196634rcHR.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;生成的XML结构跟原始文档略有不同，是下面这种格式：&lt;/p&gt;&lt;div class="dp-highlighter bg_xhtml"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[xhtml]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="tag-name"&gt;xml&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;version&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1.0"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;encoding&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"UTF-8"&lt;/span&gt;&lt;span class="tag"&gt;?&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;books&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1001"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Thinking&amp;nbsp;In&amp;nbsp;Java&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;80.0&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1002"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Core&amp;nbsp;Java&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;90.0&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"1003"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Hello,&amp;nbsp;Andriod&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;name&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;100.0&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;price&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;book&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;books&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;接下来，就该介绍操作过程了，我们先为解析器定义一个BookParser接口，每种类型的解析器需要实现此接口。BookParser.java代码如下：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.parser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.InputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.List;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.model.Book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;interface&lt;/span&gt;&lt;span&gt;&amp;nbsp;BookParser&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;解析输入流&amp;nbsp;得到Book对象集合&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;is&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;Exception&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;parse(InputStream&amp;nbsp;is)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;/**&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;序列化Book对象集合&amp;nbsp;得到XML形式的字符串&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@param&amp;nbsp;books&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@return&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@throws&amp;nbsp;Exception&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;serialize(List&amp;lt;Book&amp;gt;&amp;nbsp;books)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;好了，我们就该一个一个的实现该接口，完成我们的解析过程。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用SAX解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;SaxBookParser.java代码如下：&lt;/p&gt;&lt;div class="dp-highlighter bg_c-sharp"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[c-sharp]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-c" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;package&amp;nbsp;com.scott.xml.parser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;java.io.InputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;java.io.StringWriter;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;java.util.ArrayList;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;java.util.List;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;javax.xml.parsers.SAXParser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;javax.xml.parsers.SAXParserFactory;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.OutputKeys;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.Result;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.Transformer;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.TransformerFactory;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.sax.SAXTransformerFactory;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.sax.TransformerHandler;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;javax.xml.transform.stream.StreamResult;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;org.xml.sax.Attributes;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;org.xml.sax.SAXException;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;import&amp;nbsp;org.xml.sax.helpers.AttributesImpl;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;org.xml.sax.helpers.DefaultHandler;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;import&amp;nbsp;com.scott.xml.model.Book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;SaxBookParser&amp;nbsp;implements&amp;nbsp;BookParser&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;parse(InputStream&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;is&lt;/span&gt;&lt;span&gt;)&amp;nbsp;throws&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAXParserFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;SAXParserFactory.newInstance();&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//取得SAXParserFactory实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAXParser&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;factory.newSAXParser();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//从factory获取SAXParser实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyHandler&amp;nbsp;handler&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;MyHandler();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//实例化自定义Handler&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser.parse(&lt;span class="keyword"&gt;is&lt;/span&gt;&lt;span&gt;,&amp;nbsp;handler);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//根据自定义Handler规则解析输入流&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;handler.getBooks();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;serialize(List&amp;lt;Book&amp;gt;&amp;nbsp;books)&amp;nbsp;throws&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SAXTransformerFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;(SAXTransformerFactory)&amp;nbsp;TransformerFactory.newInstance();&lt;span class="comment"&gt;//取得SAXTransformerFactory实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransformerHandler&amp;nbsp;handler&amp;nbsp;=&amp;nbsp;factory.newTransformerHandler();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//从factory获取TransformerHandler实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Transformer&amp;nbsp;transformer&amp;nbsp;=&amp;nbsp;handler.getTransformer();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//从handler获取Transformer实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.ENCODING,&amp;nbsp;&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;设置输出采用的编码方式&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.INDENT,&amp;nbsp;&lt;span class="string"&gt;"yes"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;是否自动添加额外的空白&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,&amp;nbsp;&lt;span class="string"&gt;"no"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;是否忽略XML声明&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringWriter&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringWriter();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;result&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StreamResult(writer);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.setResult(result);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;uri&amp;nbsp;=&amp;nbsp;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//代表命名空间的URI&amp;nbsp;当URI无值时&amp;nbsp;须置为空字符串&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;localName&amp;nbsp;=&amp;nbsp;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//命名空间的本地名称(不包含前缀)&amp;nbsp;当没有进行命名空间处理时&amp;nbsp;须置为空字符串&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.startDocument();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.startElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"books"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AttributesImpl&amp;nbsp;attrs&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;AttributesImpl();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//负责存放元素的属性信息&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;char&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;ch&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attrs.clear();&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//清空属性列表&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attrs.addAttribute(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"string"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;String.valueOf(book.getId()));&lt;/span&gt;&lt;span class="comment"&gt;//添加一个名为id的属性(type影响不大,这里设为string)&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.startElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;attrs);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//开始一个book元素&amp;nbsp;关联上面设定的id属性&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.startElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//开始一个name元素&amp;nbsp;没有属性&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ch&amp;nbsp;=&amp;nbsp;String.valueOf(book.getName()).toCharArray();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.characters(ch,&amp;nbsp;0,&amp;nbsp;ch.length);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//设置name元素的文本节点&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.endElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.startElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;span class="comment"&gt;//开始一个price元素&amp;nbsp;没有属性&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ch&amp;nbsp;=&amp;nbsp;String.valueOf(book.getPrice()).toCharArray();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.characters(ch,&amp;nbsp;0,&amp;nbsp;ch.length);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//设置price元素的文本节点&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.endElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.endElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.endElement(uri,&amp;nbsp;localName,&amp;nbsp;&lt;span class="string"&gt;"books"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;handler.endDocument();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;writer.toString();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//需要重写DefaultHandler的方法&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;MyHandler&amp;nbsp;extends&amp;nbsp;DefaultHandler&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;books;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;Book&amp;nbsp;book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringBuilder&amp;nbsp;builder;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//返回解析后得到的Book对象集合&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;getBooks()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;books;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;startDocument()&amp;nbsp;throws&amp;nbsp;SAXException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.startDocument();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;ArrayList&amp;lt;Book&amp;gt;();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;startElement(String&amp;nbsp;uri,&amp;nbsp;String&amp;nbsp;localName,&amp;nbsp;String&amp;nbsp;qName,&amp;nbsp;Attributes&amp;nbsp;attributes)&amp;nbsp;throws&amp;nbsp;SAXException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.startElement(uri,&amp;nbsp;localName,&amp;nbsp;qName,&amp;nbsp;attributes);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(localName.equals(&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Book();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder.setLength(0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//将字符长度设置为0&amp;nbsp;以便重新开始读取元素内的字符节点&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;characters(&lt;/span&gt;&lt;span class="keyword"&gt;char&lt;/span&gt;&lt;span&gt;[]&amp;nbsp;ch,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;start,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;length)&amp;nbsp;throws&amp;nbsp;SAXException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.characters(ch,&amp;nbsp;start,&amp;nbsp;length);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;builder.append(ch,&amp;nbsp;start,&amp;nbsp;length);&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//将读取的字符数组追加到builder中&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;endElement(String&amp;nbsp;uri,&amp;nbsp;String&amp;nbsp;localName,&amp;nbsp;String&amp;nbsp;qName)&amp;nbsp;throws&amp;nbsp;SAXException&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.endElement(uri,&amp;nbsp;localName,&amp;nbsp;qName);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(localName.equals(&lt;/span&gt;&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setId(Integer.parseInt(builder.toString()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(localName.equals(&lt;/span&gt;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setName(builder.toString());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(localName.equals(&lt;/span&gt;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setPrice(Float.parseFloat(builder.toString()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(localName.equals(&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books.add(book);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;代码中，我们定义了自己的事件处理逻辑，重写了DefaultHandler的几个重要的事件方法。下面我为大家着重介绍一下 DefaultHandler的相关知识。DefaultHandler是一个事件处理器，可以接收解析器报告的所有事件，处理所发现的数据。它实现了 EntityResolver接口、DTDHandler接口、ErrorHandler接口和ContentHandler接口。这几个接口代表不同类 型的事件处理器。我们着重介绍一下ContentHandler接口。结构如图：&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_1305197620Q75q.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;这几个比较重要的方法已被我用红线标注，DefaultHandler实现了这些方法，但在方法体内没有做任何事情，因此我们在使用时必须覆写相关 的方法。最重要的是startElement方法、characters方法和endElement方法。当执行文档时遇到起始节 点，startElement方法将会被调用，我们可以获取起始节点相关信息；然后characters方法被调用，我们可以获取节点内的文本信息；最后 endElement方法被调用，我们可以做收尾的相关操作。&lt;/p&gt;&lt;p&gt;最后，我们需要调用SAX解析程序，这个步骤在MainActivity中完成：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.FileOutputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.InputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.List;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.app.Activity;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.content.Context;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.os.Bundle;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.util.Log;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.view.View;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.widget.Button;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.model.Book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.parser.BookParser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.parser.SaxBookParser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;MainActivity&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;extends&lt;/span&gt;&lt;span&gt;&amp;nbsp;Activity&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;final&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;TAG&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"XML"&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;BookParser&amp;nbsp;parser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;books;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;onCreate(Bundle&amp;nbsp;savedInstanceState)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;super&lt;/span&gt;&lt;span&gt;.onCreate(savedInstanceState);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContentView(R.layout.main);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button&amp;nbsp;readBtn&amp;nbsp;=&amp;nbsp;(Button)&amp;nbsp;findViewById(R.id.readBtn);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button&amp;nbsp;writeBtn&amp;nbsp;=&amp;nbsp;(Button)&amp;nbsp;findViewById(R.id.writeBtn);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readBtn.setOnClickListener(&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;View.OnClickListener()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;onClick(View&amp;nbsp;v)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputStream&amp;nbsp;is&amp;nbsp;=&amp;nbsp;getAssets().open(&lt;span class="string"&gt;"books.xml"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;SaxBookParser();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//创建SaxBookParser实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;parser.parse(is);&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//解析输入流&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.i(TAG,&amp;nbsp;book.toString());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.e(TAG,&amp;nbsp;e.getMessage());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;writeBtn.setOnClickListener(&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;View.OnClickListener()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;onClick(View&amp;nbsp;v)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;xml&amp;nbsp;=&amp;nbsp;parser.serialize(books);&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//序列化&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FileOutputStream&amp;nbsp;fos&amp;nbsp;=&amp;nbsp;openFileOutput(&lt;span class="string"&gt;"books.xml"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;Context.MODE_PRIVATE);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fos.write(xml.getBytes(&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;&lt;span&gt;));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.e(TAG,&amp;nbsp;e.getMessage());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;界面就两个按钮，顺便给大家贴上：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_1305198408j5FZ.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;点击&amp;ldquo;readXML&amp;rdquo;按钮，将会调用SAX解析器解析文档，并在日志台打印相关信息：&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_13051985521Qra.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;然后再点击&amp;ldquo;writeXML&amp;rdquo;按钮，将会在该应用包下的files目录生成一个books.xml文件：&lt;/p&gt;&lt;p&gt;&lt;img src="http://hi.csdn.net/attachment/201105/12/0_1305196634rcHR.gif" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用DOM解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;DomBookParser.java代码如下：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.parser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.InputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.StringWriter;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.ArrayList;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.List;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.parsers.DocumentBuilder;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.parsers.DocumentBuilderFactory;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.OutputKeys;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.Result;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.Source;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.Transformer;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.TransformerFactory;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.dom.DOMSource;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;javax.xml.transform.stream.StreamResult;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.w3c.dom.Document;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.w3c.dom.Element;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.w3c.dom.Node;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.w3c.dom.NodeList;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.model.Book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;DomBookParser&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;implements&lt;/span&gt;&lt;span&gt;&amp;nbsp;BookParser&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;parse(InputStream&amp;nbsp;is)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;ArrayList&amp;lt;Book&amp;gt;();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentBuilderFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;DocumentBuilderFactory.newInstance();&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//取得DocumentBuilderFactory实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentBuilder&amp;nbsp;builder&amp;nbsp;=&amp;nbsp;factory.newDocumentBuilder();&amp;nbsp;&lt;span class="comment"&gt;//从factory获取DocumentBuilder实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document&amp;nbsp;doc&amp;nbsp;=&amp;nbsp;builder.parse(is);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//解析输入流&amp;nbsp;得到Document实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element&amp;nbsp;rootElement&amp;nbsp;=&amp;nbsp;doc.getDocumentElement();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList&amp;nbsp;items&amp;nbsp;=&amp;nbsp;rootElement.getElementsByTagName(&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;items.getLength();&amp;nbsp;i++)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Book&amp;nbsp;book&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Book();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Node&amp;nbsp;item&amp;nbsp;=&amp;nbsp;items.item(i);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NodeList&amp;nbsp;properties&amp;nbsp;=&amp;nbsp;item.getChildNodes();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;j&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span&gt;;&amp;nbsp;j&amp;nbsp;&amp;lt;&amp;nbsp;properties.getLength();&amp;nbsp;j++)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Node&amp;nbsp;property&amp;nbsp;=&amp;nbsp;properties.item(j);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;nodeName&amp;nbsp;=&amp;nbsp;property.getNodeName();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(nodeName.equals(&lt;/span&gt;&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setId(Integer.parseInt(property.getFirstChild().getNodeValue()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(nodeName.equals(&lt;/span&gt;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setName(property.getFirstChild().getNodeValue());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(nodeName.equals(&lt;/span&gt;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setPrice(Float.parseFloat(property.getFirstChild().getNodeValue()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books.add(book);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;books;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;serialize(List&amp;lt;Book&amp;gt;&amp;nbsp;books)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentBuilderFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;DocumentBuilderFactory.newInstance();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DocumentBuilder&amp;nbsp;builder&amp;nbsp;=&amp;nbsp;factory.newDocumentBuilder();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Document&amp;nbsp;doc&amp;nbsp;=&amp;nbsp;builder.newDocument();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//由builder创建新文档&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element&amp;nbsp;rootElement&amp;nbsp;=&amp;nbsp;doc.createElement(&lt;span class="string"&gt;"books"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element&amp;nbsp;bookElement&amp;nbsp;=&amp;nbsp;doc.createElement(&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bookElement.setAttribute(&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;book.getId()&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element&amp;nbsp;nameElement&amp;nbsp;=&amp;nbsp;doc.createElement(&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nameElement.setTextContent(book.getName());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bookElement.appendChild(nameElement);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Element&amp;nbsp;priceElement&amp;nbsp;=&amp;nbsp;doc.createElement(&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priceElement.setTextContent(book.getPrice()&amp;nbsp;+&amp;nbsp;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bookElement.appendChild(priceElement);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rootElement.appendChild(bookElement);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc.appendChild(rootElement);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TransformerFactory&amp;nbsp;transFactory&amp;nbsp;=&amp;nbsp;TransformerFactory.newInstance();&lt;span class="comment"&gt;//取得TransformerFactory实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Transformer&amp;nbsp;transformer&amp;nbsp;=&amp;nbsp;transFactory.newTransformer();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//从transFactory获取Transformer实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.ENCODING,&amp;nbsp;&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;设置输出采用的编码方式&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.INDENT,&amp;nbsp;&lt;span class="string"&gt;"yes"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;是否自动添加额外的空白&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,&amp;nbsp;&lt;span class="string"&gt;"no"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//&amp;nbsp;是否忽略XML声明&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringWriter&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringWriter();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Source&amp;nbsp;source&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;DOMSource(doc);&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//表明文档来源是doc&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Result&amp;nbsp;result&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StreamResult(writer);&lt;/span&gt;&lt;span class="comment"&gt;//表明目标结果为writer&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transformer.transform(source,&amp;nbsp;result);&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//开始转换&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;writer.toString();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;然后再MainActivity中只需改一个地方：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readBtn.setOnClickListener(&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;View.OnClickListener()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;onClick(View&amp;nbsp;v)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputStream&amp;nbsp;is&amp;nbsp;=&amp;nbsp;getAssets().open(&lt;span class="string"&gt;"books.xml"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;new&amp;nbsp;SaxBookParser();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;DomBookParser();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;parser.parse(is);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.i(TAG,&amp;nbsp;book.toString());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.e(TAG,&amp;nbsp;e.getMessage());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;执行结果是一样的。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用PULL解析器：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;PullBookParser.java代码如下：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;package&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.parser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.InputStream;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.io.StringWriter;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.ArrayList;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;java.util.List;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.xmlpull.v1.XmlPullParser;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;org.xmlpull.v1.XmlSerializer;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;android.util.Xml;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;com.scott.xml.model.Book;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;PullBookParser&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;implements&lt;/span&gt;&lt;span&gt;&amp;nbsp;BookParser&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;parse(InputStream&amp;nbsp;is)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;Book&amp;gt;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Book&amp;nbsp;book&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlPullParserFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;XmlPullParserFactory.newInstance();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlPullParser&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;factory.newPullParser();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlPullParser&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;Xml.newPullParser();&amp;nbsp;&lt;span class="comment"&gt;//由android.util.Xml创建一个XmlPullParser实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser.setInput(is,&amp;nbsp;&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class="comment"&gt;//设置输入流&amp;nbsp;并指明编码方式&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;int&lt;/span&gt;&lt;span&gt;&amp;nbsp;eventType&amp;nbsp;=&amp;nbsp;parser.getEventType();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;while&lt;/span&gt;&lt;span&gt;&amp;nbsp;(eventType&amp;nbsp;!=&amp;nbsp;XmlPullParser.END_DOCUMENT)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;switch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(eventType)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&lt;span&gt;&amp;nbsp;XmlPullParser.START_DOCUMENT:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;ArrayList&amp;lt;Book&amp;gt;();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;break&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&lt;span&gt;&amp;nbsp;XmlPullParser.START_TAG:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(parser.getName().equals(&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Book();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(parser.getName().equals(&lt;/span&gt;&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eventType&amp;nbsp;=&amp;nbsp;parser.next();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setId(Integer.parseInt(parser.getText()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(parser.getName().equals(&lt;/span&gt;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eventType&amp;nbsp;=&amp;nbsp;parser.next();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setName(parser.getText());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;else&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(parser.getName().equals(&lt;/span&gt;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eventType&amp;nbsp;=&amp;nbsp;parser.next();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book.setPrice(Float.parseFloat(parser.getText()));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;break&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;case&lt;/span&gt;&lt;span&gt;&amp;nbsp;XmlPullParser.END_TAG:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(parser.getName().equals(&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books.add(book);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;null&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;break&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eventType&amp;nbsp;=&amp;nbsp;parser.next();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;books;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;serialize(List&amp;lt;Book&amp;gt;&amp;nbsp;books)&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;throws&lt;/span&gt;&lt;span&gt;&amp;nbsp;Exception&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlPullParserFactory&amp;nbsp;factory&amp;nbsp;=&amp;nbsp;XmlPullParserFactory.newInstance();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlSerializer&amp;nbsp;serializer&amp;nbsp;=&amp;nbsp;factory.newSerializer();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlSerializer&amp;nbsp;serializer&amp;nbsp;=&amp;nbsp;Xml.newSerializer();&amp;nbsp;&lt;span class="comment"&gt;//由android.util.Xml创建一个XmlSerializer实例&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringWriter&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;StringWriter();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.setOutput(writer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="comment"&gt;//设置输出方向为writer&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.startDocument(&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;true&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.startTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"books"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.startTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.attribute(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"id"&lt;/span&gt;&lt;span&gt;,&amp;nbsp;book.getId()&amp;nbsp;+&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.startTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.text(book.getName());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.endTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"name"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.startTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.text(book.getPrice()&amp;nbsp;+&amp;nbsp;&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.endTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"price"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.endTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"book"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.endTag(&lt;span class="string"&gt;""&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class="string"&gt;"books"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;serializer.endDocument();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;writer.toString();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;然后再对MainActivity做以下更改：&lt;/p&gt;&lt;div class="dp-highlighter bg_java"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;strong&gt;[java]&lt;/strong&gt; &lt;a class="ViewSource" title="view plain" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;view plain&lt;/a&gt;&lt;a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/liuhe688/article/details/6415593"&gt;copy&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-j" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readBtn.setOnClickListener(&lt;/span&gt;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;View.OnClickListener()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="annotation"&gt;@Override&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword"&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;onClick(View&amp;nbsp;v)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InputStream&amp;nbsp;is&amp;nbsp;=&amp;nbsp;getAssets().open(&lt;span class="string"&gt;"books.xml"&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;new&amp;nbsp;SaxBookParser();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span class="comment"&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;new&amp;nbsp;DomBookParser();&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parser&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;PullBookParser();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;books&amp;nbsp;=&amp;nbsp;parser.parse(is);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="keyword"&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Book&amp;nbsp;book&amp;nbsp;:&amp;nbsp;books)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.i(TAG,&amp;nbsp;book.toString());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class="keyword"&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log.e(TAG,&amp;nbsp;e.getMessage());&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;和其他两个执行结果都一样。&lt;/p&gt;&lt;p&gt;对于这三种解析器各有优点，我个人比较倾向于PULL解析器，因为SAX解析器操作起来太笨重，DOM不适合文档较大，内存较小的场景，唯有PULL轻巧灵活，速度快，占用内存小，使用非常顺手。读者也可以根据自己的喜好选择相应的解析技术。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;转自:http://blog.csdn.net/liuhe688/article/details/6415593&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2525982.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525982.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525717.html</id><title type="text">Eclipse最全快捷键</title><summary type="text">常用快捷键:Ctrl+1 快速修复Ctrl+D: 删除当前行Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)Shift+Ctrl+Enter 在当前行插入空行(原理同上条)C</summary><published>2012-05-30T01:16:00Z</published><updated>2012-05-30T01:16:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525717.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525717.html"/><content type="html">&lt;p&gt;&lt;strong&gt;常用快捷键:&lt;/strong&gt;&lt;br /&gt;Ctrl+1 快速修复&lt;br /&gt;Ctrl+D: 删除当前行&lt;br /&gt;Ctrl+Alt+&amp;darr; 复制当前行到下一行(复制增加)&lt;br /&gt;Ctrl+Alt+&amp;uarr; 复制当前行到上一行(复制增加)&lt;br /&gt;Alt+&amp;darr; 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)&lt;br /&gt;Alt+&amp;uarr; 当前行和上面一行交互位置(同上)&lt;br /&gt;Alt+&amp;larr; 前一个编辑的页面&lt;br /&gt;Alt+&amp;rarr; 下一个编辑的页面(当然是针对上面那条来说了)&lt;br /&gt;Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性&lt;br /&gt;Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)&lt;br /&gt;Shift+Ctrl+Enter 在当前行插入空行(原理同上条)&lt;br /&gt;Ctrl+Q 定位到最后编辑的地方&lt;br /&gt;Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)&lt;br /&gt;Ctrl+M 最大化当前的Edit或View (再按则反之)&lt;br /&gt;Ctrl+/ 注释当前行,再按则取消注释&lt;br /&gt;Ctrl+O 快速显示 OutLine&lt;br /&gt;Ctrl+T 快速显示当前类的继承结构&lt;br /&gt;Ctrl+W 关闭当前Editer&lt;br /&gt;Ctrl+K 参照选中的Word快速定位到下一个&lt;br /&gt;Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)&lt;br /&gt;Ctrl+/(小键盘) 折叠当前类中的所有代码&lt;br /&gt;Ctrl+&amp;times;(小键盘) 展开当前类中的所有代码&lt;br /&gt;Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)&lt;br /&gt;Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)&lt;br /&gt;Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)&lt;br /&gt;Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)&lt;br /&gt;Ctrl+Shift+F4 关闭所有打开的Editer&lt;br /&gt;Ctrl+Shift+X 把当前选中的文本全部变味小写&lt;br /&gt;Ctrl+Shift+Y 把当前选中的文本全部变为小写&lt;br /&gt;Ctrl+Shift+F 格式化当前代码&lt;br /&gt;Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)&lt;br /&gt;Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)&lt;br /&gt;Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)&lt;br /&gt;Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)&lt;br /&gt;Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)&lt;br /&gt;Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)&lt;br /&gt;Alt+Shift+I 合并变量(可能这样说有点不妥Inline)&lt;br /&gt;Alt+Shift+V 移动函数和变量(不怎么常用)&lt;br /&gt;Alt+Shift+Z 重构的后悔药(Undo)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;编辑&lt;/strong&gt;&lt;br /&gt;全局 查找并替换 Ctrl+F&lt;br /&gt;文本编辑器 查找上一个 Ctrl+Shift+K&lt;br /&gt;文本编辑器 查找下一个 Ctrl+K&lt;br /&gt;全局 撤销 Ctrl+Z&lt;br /&gt;全局 复制 Ctrl+C&lt;br /&gt;全局 恢复上一个选择 Alt+Shift+&amp;darr;&lt;br /&gt;全局 剪切 Ctrl+X&lt;br /&gt;全局 快速修正 Ctrl1+1&lt;br /&gt;全局 内容辅助 Alt+/&lt;br /&gt;全局 全部选中 Ctrl+A&lt;br /&gt;全局 删除 Delete&lt;br /&gt;全局 上下文信息 Alt+?&lt;br /&gt;Alt+Shift+?&lt;br /&gt;Ctrl+Shift+Space&lt;br /&gt;java编辑器 显示工具提示描述 F2&lt;br /&gt;java编辑器 选择封装元素 Alt+Shift+&amp;uarr;&lt;br /&gt;java编辑器 选择上一个元素 Alt+Shift+&amp;larr;&lt;br /&gt;java编辑器 选择下一个元素 Alt+Shift+&amp;rarr;&lt;br /&gt;文本编辑器 增量查找 Ctrl+J&lt;br /&gt;文本编辑器 增量逆向查找 Ctrl+Shift+J&lt;br /&gt;全局 粘贴 Ctrl+V&lt;br /&gt;全局 重做 Ctrl+Y&lt;/p&gt;&lt;p&gt;&lt;strong&gt;查看&lt;/strong&gt;&lt;br /&gt;全局 放大 Ctrl+=&lt;br /&gt;全局 缩小 Ctrl+-&lt;/p&gt;&lt;p&gt;&lt;strong&gt;窗口&lt;/strong&gt;&lt;br /&gt;全局 激活编辑器 F12&lt;br /&gt;全局 切换编辑器 Ctrl+Shift+W&lt;br /&gt;全局 上一个编辑器 Ctrl+Shift+F6&lt;br /&gt;全局 上一个视图 Ctrl+Shift+F7&lt;br /&gt;全局 上一个透视图 Ctrl+Shift+F8&lt;br /&gt;全局 下一个编辑器 Ctrl+F6&lt;br /&gt;全局 下一个视图 Ctrl+F7&lt;br /&gt;全局 下一个透视图 Ctrl+F8&lt;br /&gt;文本编辑器 显示标尺上下文菜单 Ctrl+W&lt;br /&gt;全局 显示视图菜单 Ctrl+F10&lt;br /&gt;全局 显示系统菜单 Alt+-&lt;/p&gt;&lt;p&gt;&lt;strong&gt;导航&lt;/strong&gt;&lt;br /&gt;java编辑器 打开结构 Ctrl+F3&lt;br /&gt;全局 打开类型 Ctrl+Shift+T&lt;br /&gt;全局 打开类型层次结构 F4&lt;br /&gt;全局 打开声明 F3&lt;br /&gt;全局 打开外部javadoc Shift+F2&lt;br /&gt;全局 打开资源 Ctrl+Shift+R&lt;br /&gt;全局 后退历史记录 Alt+&amp;larr;&lt;br /&gt;全局 前进历史记录 Alt+&amp;rarr;&lt;br /&gt;全局 上一个 Ctrl+,&lt;br /&gt;全局 下一个 Ctrl+.&lt;br /&gt;java编辑器 显示大纲 Ctrl+O&lt;br /&gt;全局 在层次结构中打开类型 Ctrl+Shift+H&lt;br /&gt;全局 转至匹配的括号 Ctrl+Shift+P&lt;br /&gt;全局 转至上一个编辑位置 Ctrl+Q&lt;br /&gt;java编辑器 转至上一个成员 Ctrl+Shift+&amp;uarr;&lt;br /&gt;java编辑器 转至下一个成员 Ctrl+Shift+&amp;darr;&lt;br /&gt;文本编辑器 转至行 Ctrl+L&lt;/p&gt;&lt;p&gt;&lt;strong&gt;搜索&lt;/strong&gt;&lt;br /&gt;全局 出现在文件中 Ctrl+Shift+U&lt;br /&gt;全局 打开搜索对话框 Ctrl+H&lt;br /&gt;全局 工作区中的声明 Ctrl+G&lt;br /&gt;全局 工作区中的引用 Ctrl+Shift+G&lt;/p&gt;&lt;p&gt;&lt;strong&gt;文本编辑&lt;/strong&gt;&lt;br /&gt;文本编辑器 改写切换 Insert&lt;br /&gt;文本编辑器 上滚行 Ctrl+&amp;uarr;&lt;br /&gt;文本编辑器 下滚行 Ctrl+&amp;darr;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;文件&lt;/strong&gt;&lt;br /&gt;全局 保存 Ctrl+X&lt;br /&gt;Ctrl+S&lt;br /&gt;全局 打印 Ctrl+P&lt;br /&gt;全局 关闭 Ctrl+F4&lt;br /&gt;全局 全部保存 Ctrl+Shift+S&lt;br /&gt;全局 全部关闭 Ctrl+Shift+F4&lt;br /&gt;全局 属性 Alt+Enter&lt;br /&gt;全局 新建 Ctrl+N&lt;/p&gt;&lt;p&gt;&lt;strong&gt;项目&lt;/strong&gt;&lt;br /&gt;全局 全部构建 Ctrl+B&lt;/p&gt;&lt;p&gt;&lt;strong&gt;源代码&lt;/strong&gt;&lt;br /&gt;java编辑器 格式化 Ctrl+Shift+F&lt;br /&gt;java编辑器 取消注释 Ctrl+\&lt;br /&gt;java编辑器 注释 Ctrl+/&lt;br /&gt;java编辑器 添加导入 Ctrl+Shift+M&lt;br /&gt;java编辑器 组织导入 Ctrl+Shift+O&lt;br /&gt;java编辑器 使用try/catch块来包围 未设置，太常用了，所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;运行&lt;/strong&gt;&lt;br /&gt;作用域 功能 快捷键&lt;br /&gt;全局 单步返回 F7&lt;br /&gt;全局 单步跳过 F6&lt;br /&gt;全局 单步跳入 F5&lt;br /&gt;全局 单步跳入选择 Ctrl+F5&lt;br /&gt;全局 调试上次启动 F11&lt;br /&gt;全局 继续 F8&lt;br /&gt;全局 使用过滤器单步执行 Shift+F5&lt;br /&gt;全局 添加/去除断点 Ctrl+Shift+B&lt;br /&gt;全局 显示 Ctrl+D&lt;br /&gt;全局 运行上次启动 Ctrl+F11&lt;br /&gt;全局 运行至行 Ctrl+R&lt;br /&gt;全局 执行 Ctrl+U&lt;/p&gt;&lt;p&gt;&lt;strong&gt;重构&lt;/strong&gt;&lt;br /&gt;作用域 功能 快捷键&lt;br /&gt;全局 撤销重构 Alt+Shift+Z&lt;br /&gt;全局 抽取方法 Alt+Shift+M&lt;br /&gt;全局 抽取局部变量 Alt+Shift+L&lt;br /&gt;全局 内联 Alt+Shift+I&lt;br /&gt;全局 移动 Alt+Shift+V&lt;br /&gt;全局 重命名 Alt+Shift+R&lt;br /&gt;全局 重做 Alt+Shift+Y&lt;/p&gt;&lt;p class="announce"&gt;转载请注明转自 : http://www.r-base.net/archives/749&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2525717.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/30/2525717.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/29/2524425.html</id><title type="text">Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面</title><summary type="text">转自:http://www.cnblogs.com/mainroadlee/archive/2011/01/11/Android_Network_State_Checking_And_Setting.html获取网络连接状态随着3G和Wifi的推广，越来越多的Android应用程序需要调用网络资源，检测网络连接状态也就成为网络应用程序所必备的功能。Android平台提供了ConnectivityManager类，用于网络连接状态的检测。Android开发文档这样描述ConnectivityManager的作用：Class that answers queries about the state</summary><published>2012-05-29T10:43:00Z</published><updated>2012-05-29T10:43:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2524425.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2524425.html"/><content type="html">&lt;p&gt;&lt;strong&gt;转自:&lt;a href="http://www.cnblogs.com/mainroadlee/archive/2011/01/11/Android_Network_State_Checking_And_Setting.html"&gt;http://www.cnblogs.com/mainroadlee/archive/2011/01/11/Android_Network_State_Checking_And_Setting.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;获取网络连接状态&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;随着3G和Wifi的推广，越来越多的Android应用程序需要调用网络资源，检测网络连接状态也就成为网络应用程序所必备的功能。&lt;/p&gt;&lt;p&gt;Android平台提供了&lt;a href="http://developer.android.com/reference/android/net/ConnectivityManager.html" target="_blank"&gt;ConnectivityManager&lt;/a&gt;&amp;nbsp;&amp;nbsp;类，用于网络连接状态的检测。&lt;/p&gt;&lt;p&gt;Android开发文档这样描述&lt;a href="http://developer.android.com/reference/android/net/ConnectivityManager.html" target="_blank"&gt;ConnectivityManager&lt;/a&gt;&amp;nbsp;的作用：&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by calling&lt;code&gt;&lt;a href="http://developer.android.com/reference/android/content/Context.html#getSystemService(java.lang.String)"&gt;Context.getSystemService(Context.CONNECTIVITY_SERVICE)&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;The primary responsibilities of this class are to:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)&lt;/li&gt;&lt;li&gt;Send broadcast intents when network connectivity changes&lt;/li&gt;&lt;li&gt;Attempt to "fail over" to another network when connectivity to a network is lost&lt;/li&gt;&lt;li&gt;Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;span&gt;下面这个简单的例子 checkNetworkInfo() 说明了如何编程获取Android手机的当前网络状态&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; checkNetworkInfo()&lt;br /&gt;    {&lt;br /&gt;        ConnectivityManager conMan &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;mobile 3G Data Network&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;        State mobile &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();&lt;br /&gt;        txt3G.setText(mobile.toString()); //显示3G网络连接状态&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;wifi&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;        State wifi &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();&lt;br /&gt;        txtWifi.setText(wifi.toString()); //显示wifi连接状态&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span class="typ"&gt;注:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span class="typ"&gt;根据Android的安全机制，在使用ConnectivityManager时，必须在AndroidManifest.xml中添加&amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt; 否则无法获得系统的许可。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;运行结果(关闭3G及wifi网络连接的状态下)&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/110528/2011011111122062.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;调用Android手机的网络配置界面&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;使用过Android手机上的手机QQ的朋友，应该知道，当QQ启动时，如果没有有效的网络连接，QQ会提示转入手机的网络配置界面。这是如何实现的呢。其实很简单啦&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt;void&lt;/span&gt;&lt;span&gt; checkNetworkInfo()&lt;br /&gt;    {&lt;br /&gt;        ConnectivityManager conMan &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;mobile 3G Data Network&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;        State mobile &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();&lt;br /&gt;        txt3G.setText(mobile.toString());&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;wifi&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;        State wifi &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();&lt;br /&gt;        txtWifi.setText(wifi.toString());&lt;br /&gt;        &lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;如果3G网络和wifi网络都未连接，且不是处于正在连接状态 则进入Network Setting界面 由用户配置网络连接&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(mobile&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;State.CONNECTED&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;mobile&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;State.CONNECTING)&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt;(wifi&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;State.CONNECTED&lt;/span&gt;&lt;span&gt;||&lt;/span&gt;&lt;span&gt;wifi&lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt;State.CONNECTING)&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        startActivity(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; Intent(Settings.ACTION_WIRELESS_SETTINGS));&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;进入无线网络配置界面&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;进入手机中的wifi网络设置界面&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;运行结果(关闭3G及wifi网络连接的状态下)，程序转入无线网络配置界面&lt;/span&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;startActivity(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; Intent(Settings.ACTION_WIRELESS_SETTINGS));&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;进入无线网络配置界面&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/110528/2011011111180633.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;如果调用&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span&gt;startActivity(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; Intent(Settings.ACTION_WIFI_SETTINGS)); &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt;直接进入手机中的wifi网络设置界面&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;则直接进入手机中的wifi网络设置界面&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/110528/2011011111194986.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;在wifi网络连接后 运行该程序&lt;/p&gt;&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/110528/2011011111203975.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;我们可以看到 wi-fi 状态为已连接(CONNECTED).&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2524425.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2524425.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/29/2523503.html</id><title type="text">Android 网络显示图片 通过代理访问</title><summary type="text">主要的代码参考：http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html重点看如何在Android代码中设置代理。代码如下： 1 public class MainDemo extends Activity { 2 /** Called when the activity is first created. */ 3 4 private ImageView imageView = null; 5 6 private String urlString = "http://s7.sinaimg.cn/...</summary><published>2012-05-29T01:51:00Z</published><updated>2012-05-29T01:51:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2523503.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2523503.html"/><content type="html">&lt;p&gt;主要的代码参考：&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html"&gt;http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;重点看如何在Android代码中设置代理。&lt;/p&gt;&lt;p&gt;代码如下：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MainDemo &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt;&lt;span style="color: #000000;"&gt; Activity {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     &lt;span style="color: #008000;"&gt;/**&lt;/span&gt;&lt;span style="color: #008000;"&gt; Called when the activity is first created. &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; ImageView imageView = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; String urlString = "http://s7.sinaimg.cn/middle/9b82a8c54c10ecacbb686&amp;amp;960"&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;     &lt;br/&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;    @Override&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; onCreate(Bundle savedInstanceState) {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;super&lt;/span&gt;&lt;span style="color: #000000;"&gt;.onCreate(savedInstanceState);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;        setContentView(R.layout.main);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt;         imageView =&lt;span style="color: #000000;"&gt; (ImageView) findViewById(R.id.imageview01);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;        imageView.setImageBitmap(returnBitmap(urlString));&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; Bitmap returnBitmap(String url) {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt;         Bitmap bm = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;try&lt;/span&gt;&lt;span style="color: #000000;"&gt; {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt;             HttpURLConnection conn =&lt;span style="color: #000000;"&gt; getUrlConnection(url);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt;             conn.setDoInput(&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;23&lt;/span&gt; &lt;span style="color: #000000;"&gt;            conn.connect();&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;24&lt;/span&gt;             InputStream is =&lt;span style="color: #000000;"&gt; conn.getInputStream();&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;25&lt;/span&gt;             bm =&lt;span style="color: #000000;"&gt; BitmapFactory.decodeStream(is);&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;26&lt;/span&gt; &lt;span style="color: #000000;"&gt;            is.close();&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;27&lt;/span&gt;         } &lt;span style="color: #0000ff;"&gt;catch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (IOException e) {&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;28&lt;/span&gt;             &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; TODO Auto-generated catch block&lt;/span&gt;&lt;br/&gt;&lt;span style="color: #008080;"&gt;29&lt;/span&gt; &lt;span style="color: #000000;"&gt;            e.printStackTrace();&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;30&lt;/span&gt; &lt;span style="color: #000000;"&gt;        }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;31&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #008080;"&gt;32&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; bm;&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;33&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;34&lt;/span&gt; &lt;br/&gt;&lt;span style="color: #ff0000;"&gt;35     private HttpURLConnection getUrlConnection(String url) {&lt;br/&gt;36         java.net.Proxy p = new java.net.Proxy(java.net.Proxy.Type.HTTP,&lt;br/&gt;37                         new InetSocketAddress("172.20.220.2",&lt;br/&gt;38                                 8080));&lt;br/&gt;39         try {&lt;br/&gt;40             return (HttpURLConnection) new URL(url).openConnection(p);&lt;br/&gt;41         } catch (MalformedURLException e) {&lt;br/&gt;42             // TODO Auto-generated catch block&lt;br/&gt;43             e.printStackTrace();&lt;br/&gt;44         } catch (IOException e) {&lt;br/&gt;45             // TODO Auto-generated catch block&lt;br/&gt;46             e.printStackTrace();&lt;br/&gt;47         }&lt;br/&gt;48         return null;&lt;br/&gt;49     }&lt;br/&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;50&lt;/span&gt; }&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2523503.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/29/2523503.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html</id><title type="text">Android 网络显示图片</title><summary type="text">在Android中显示一张网络图片其实是超级简单的，下面就一个非常简单的例子：Step1：1、创建你的Activity，本例中以ViewWebImageActivity说明；2、ViewWebImageActivity中的代码如下：String urlString ="http://s7.sinaimg.cn/middle/9b82a8c54c10ecacbb686&amp;960";private ImageView imageView = null; @Override public void onCreate(Bundle savedInstanceState) {</summary><published>2012-05-28T14:16:00Z</published><updated>2012-05-28T14:16:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html"/><content type="html">&lt;p&gt;在Android中显示一张网络图片其实是超级简单的，下面就一个非常简单的例子：&lt;/p&gt;&lt;div&gt;Step1：&lt;/div&gt;&lt;div&gt;1、创建你的Activity，本例中以ViewWebImageActivity说明；&lt;/div&gt;&lt;div&gt;2、ViewWebImageActivity中的代码如下：&lt;/div&gt;&lt;div&gt;&lt;p&gt;String urlString ="http://s7.sinaimg.cn/middle/9b82a8c54c10ecacbb686&amp;amp;960";&lt;br /&gt;private ImageView imageView = null;&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;        super.onCreate(savedInstanceState);&lt;br /&gt;        setContentView(R.layout.main);&lt;br /&gt;        imageView = (ImageView)findViewById(R.id.imageview01);&lt;br /&gt;        try {&lt;br /&gt;imageView.setImageBitmap(returnBitMap(urlString));&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;// TODO Auto-generated catch block&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    private Bitmap returnBitMap(String url) throws IOException{&lt;br /&gt;    Bitmap bm = null;&lt;br /&gt;    URL myFileUrl = null;&lt;br /&gt;        try {&lt;br /&gt;myFileUrl  = new URL(url);&lt;br /&gt;&lt;br /&gt;} catch (MalformedURLException e) {&lt;br /&gt;// TODO Auto-generated catch block&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;        &lt;br /&gt;        HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();&lt;br /&gt;        conn.setDoInput(true);&lt;br /&gt;        conn.connect();&lt;br /&gt;        InputStream in = conn.getInputStream();&lt;br /&gt;        bm = BitmapFactory.decodeStream(in);&lt;br /&gt;        in.close();&lt;br /&gt;        &lt;br /&gt;        return bm;&lt;br /&gt;        &lt;br /&gt;    }&lt;/p&gt;&lt;/div&gt;&lt;div&gt;3、其中，returnBitMap(String url) 方法就是具体实现网络图片转换成bitmap。&lt;/div&gt;&lt;div&gt;Step2：&lt;/div&gt;&lt;div&gt;1、修改你的main.xml文件如下：&lt;/div&gt;&lt;div&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; android:orientation="vertical"&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; android:layout_width="fill_parent"&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; android:layout_height="fill_parent"&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;ImageView&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;android:id="@+id/imview"&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;android:layout_width="wrap_content" &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;android:layout_height="wrap_content"&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;android:layout_gravity="center"&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;/&amp;gt; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;lt;/LinearLayout&amp;gt;&lt;/div&gt;&lt;div&gt;Step3：&lt;/div&gt;&lt;div&gt;1、在你的AndroidManifest.xml文件的&amp;lt;/manifest&amp;gt;节点上面添加&amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;，这是由于Android有很多的权限限制，否则图片是不能在你的模拟器上显示的。&lt;/div&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2522558.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/28/2522558.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518184.html</id><title type="text">Google code android开源项目(五)</title><summary type="text">1.diskusagehttp://code.google.com/p/diskusage/提供了一种找到存储卡上的文件和消耗了大量的空间目录的方法2.themissingtabwidgethttp://code.google.com/p/themissingtabwidget/水平tab标签页3.xinkvpnhttp://code.google.com/p/xinkvpn/通过XinkVpn桌面小工具，将可以实现一键连接/关闭VPN4.android-aspectjhttp://code.google.com/p/android-aspectj/android使用AspectJ方法跟踪的例</summary><published>2012-05-25T07:55:00Z</published><updated>2012-05-25T07:55:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518184.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518184.html"/><content type="html">&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;diskusage&amp;nbsp;&lt;a href="http://code.google.com/p/diskusage/"&gt;http://code.google.com/p/diskusage/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;提供了一种找到存储卡上的文件和消耗了大量的空间目录的方法&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;themissingtabwidget&amp;nbsp;&lt;a href="http://code.google.com/p/themissingtabwidget/"&gt;http://code.google.com/p/themissingtabwidget/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;水平tab标签页&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xinkvpn&amp;nbsp;&lt;a href="http://code.google.com/p/xinkvpn/"&gt;http://code.google.com/p/xinkvpn/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;通过XinkVpn桌面小工具，将可以实现一键连接/关闭VPN&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-aspectj&amp;nbsp;&lt;a href="http://code.google.com/p/android-aspectj/"&gt;http://code.google.com/p/android-aspectj/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android使用AspectJ&amp;nbsp;方法跟踪的例子&lt;/p&gt;&lt;p&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;roboguice&amp;nbsp;&lt;a href="http://code.google.com/p/roboguice/"&gt;http://code.google.com/p/roboguice/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Android&amp;nbsp;版google-guice（google的依赖注入框架）&lt;/p&gt;&lt;p&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ical-import-export&amp;nbsp;&lt;a href="http://code.google.com/p/ical-import-export/"&gt;http://code.google.com/p/ical-import-export/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;导入导出ical文件&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-gps-emulator&amp;nbsp;&lt;a href="http://code.google.com/p/android-gps-emulator/"&gt;http://code.google.com/p/android-gps-emulator/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;基于地图模拟gps位置&lt;/p&gt;&lt;p&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-ndk-profiler&amp;nbsp;&lt;a href="http://code.google.com/p/android-ndk-profiler/"&gt;http://code.google.com/p/android-ndk-profiler/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;编译进Android NDK代码生成gprof（打印出程序运行中各个函数消耗的时间，可以帮助程序员找出众多函数中耗时最多的函数）兼容的性能信息&lt;/p&gt;&lt;p&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flot-android-chart&amp;nbsp;&lt;a href="http://code.google.com/p/flot-android-chart/"&gt;http://code.google.com/p/flot-android-chart/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;使Flot(基于JQuery的纯JavaScript实现的绘图库)运行在android平台上&lt;/p&gt;&lt;p&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;weibo4j/Weibo4Android&amp;nbsp;&lt;a href="http://code.google.com/p/weibo4j/"&gt;http://code.google.com/p/weibo4j/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;一款基于新浪微博开放平台API（V2）接口的支持oauth2授权认证方式的Java SDK&lt;/p&gt;&lt;p&gt;11.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;simple&amp;nbsp;&lt;a href="http://code.google.com/p/simple/"&gt;http://code.google.com/p/simple/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Simple是针对Android发展出来的Basic语言版本&lt;/p&gt;&lt;p&gt;12.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-calendar-view&amp;nbsp;&lt;a href="http://code.google.com/p/android-calendar-view/"&gt;http://code.google.com/p/android-calendar-view/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android日历控件&lt;/p&gt;&lt;p&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scirocco&amp;nbsp;&lt;a href="http://code.google.com/p/scirocco/"&gt;http://code.google.com/p/scirocco/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;UI自动化测试工具&lt;/p&gt;&lt;p&gt;14.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;resting&amp;nbsp;&lt;a href="http://code.google.com/p/resting/"&gt;http://code.google.com/p/resting/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;REST客户端&lt;/p&gt;&lt;p&gt;15.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;icingadroid&amp;nbsp;&lt;a href="http://code.google.com/p/icingadroid/"&gt;http://code.google.com/p/icingadroid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android版Icinga，Icinga是Nagios（网络监视工具）扩展版本。&lt;/p&gt;&lt;p&gt;16.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-simple-game&amp;nbsp;&lt;a href="http://code.google.com/p/android-simple-game/"&gt;http://code.google.com/p/android-simple-game/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;一个难度较高的弹幕游戏，国人开发&lt;/p&gt;&lt;p&gt;17.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;weather-notification-android&amp;nbsp;&lt;a href="http://code.google.com/p/weather-notification-android/"&gt;http://code.google.com/p/weather-notification-android/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;通知栏天气预报&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转自:&lt;a href="http://blog.csdn.net/dellheng/article/details/7173112"&gt;http://blog.csdn.net/dellheng/article/details/7173112&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2518184.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518184.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518173.html</id><title type="text">Google code android开源项目(四)</title><summary type="text">1.sparsersshttp://code.google.com/p/sparserss/一个简洁的android rss阅读器2.desktopsmshttp://code.google.com/p/desktopsms/在电脑写短信3.kraigsandroidhttp://code.google.com/p/kraigsandroid/创建者写的一些应用包括：闹钟和调节屏幕亮度小工具等4.remotecontrol-for-winamphttp://code.google.com/p/remotecontrol-for-winamp/远程控制winamp(5.5以上版本)5.tesse</summary><published>2012-05-25T07:52:00Z</published><updated>2012-05-25T07:52:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518173.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518173.html"/><content type="html">&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sparserss&amp;nbsp;&lt;a href="http://code.google.com/p/sparserss/"&gt;http://code.google.com/p/sparserss/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;一个简洁的android rss阅读器&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;desktopsms&amp;nbsp;&lt;a href="http://code.google.com/p/desktopsms/"&gt;http://code.google.com/p/desktopsms/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;在电脑写短信&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kraigsandroid&amp;nbsp;&lt;a href="http://code.google.com/p/kraigsandroid/"&gt;http://code.google.com/p/kraigsandroid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;创建者写的一些应用包括：闹钟和调节屏幕亮度小工具等&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remotecontrol-for-winamp&amp;nbsp;&lt;a href="http://code.google.com/p/remotecontrol-for-winamp/"&gt;http://code.google.com/p/remotecontrol-for-winamp/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;远程控制winamp(5.5以上版本)&lt;/p&gt;&lt;p&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tesseract-android-tools&amp;nbsp;&lt;a href="http://code.google.com/p/tesseract-android-tools/"&gt;http://code.google.com/p/tesseract-android-tools/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Tesseract OCR（HP实验室开源的）封装的&amp;nbsp;Android APIs&lt;/p&gt;&lt;p&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-os-monitor&amp;nbsp;&lt;a href="http://code.google.com/p/android-os-monitor/"&gt;http://code.google.com/p/android-os-monitor/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;系统监视器&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;apdfviewer&amp;nbsp;&lt;a href="http://code.google.com/p/apdfviewer/"&gt;http://code.google.com/p/apdfviewer/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;pdf阅读器&lt;/p&gt;&lt;p&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;battery-indicator&amp;nbsp;&lt;a href="http://code.google.com/p/battery-indicator/"&gt;http://code.google.com/p/battery-indicator/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;电池指示器&lt;/p&gt;&lt;p&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sillim&amp;nbsp;&lt;a href="http://code.google.com/p/sillim/"&gt;http://code.google.com/p/sillim/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;创建者学习写的项目&lt;/p&gt;&lt;p&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vs-android&amp;nbsp;&lt;a href="http://code.google.com/p/vs-android/"&gt;http://code.google.com/p/vs-android/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;使用 visual studio 开发Android NDK C/C++&amp;nbsp;&lt;/p&gt;&lt;p&gt;11.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quake2android&amp;nbsp;&lt;a href="http://code.google.com/p/quake2android/"&gt;http://code.google.com/p/quake2android/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android版quake2&lt;/p&gt;&lt;p&gt;12.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;premotedroid&amp;nbsp;&lt;a href="http://code.google.com/p/premotedroid/"&gt;http://code.google.com/p/premotedroid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;远程控制电脑&lt;/p&gt;&lt;p&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alienbloodbath&amp;nbsp;&lt;a href="http://code.google.com/p/alienbloodbath/"&gt;http://code.google.com/p/alienbloodbath/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android版魂斗罗（其实除了角色有点像，其它与魂斗罗同学没什么关系）&lt;/p&gt;&lt;p&gt;14.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsdl2ksoap&amp;nbsp;&lt;a href="http://code.google.com/p/wsdl2ksoap/"&gt;http://code.google.com/p/wsdl2ksoap/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;基于图形界面的应用程序，用于从 WSDL 元数据创建可用的 kSOAP 2调用类&lt;/p&gt;&lt;p&gt;15.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-dateslider&amp;nbsp;&lt;a href="http://code.google.com/p/android-dateslider/"&gt;http://code.google.com/p/android-dateslider/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;类似ios的日期选择控件，不过它是横向的&lt;/p&gt;&lt;p&gt;16.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a2dpvolume&amp;nbsp;&lt;a href="http://code.google.com/p/a2dpvolume/"&gt;http://code.google.com/p/a2dpvolume/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;蓝牙连接后自动调节声音、读短信等功能、车载蓝牙相关功能&lt;/p&gt;&lt;p&gt;17.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gifview&amp;nbsp;&lt;a href="http://code.google.com/p/gifview/"&gt;http://code.google.com/p/gifview/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;直接显示gif的view&lt;/p&gt;&lt;p&gt;18.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java-ide-droid&amp;nbsp;&lt;a href="http://code.google.com/p/java-ide-droid/"&gt;http://code.google.com/p/java-ide-droid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android版的IDE,可以创建&amp;nbsp;native Android applications&lt;/p&gt;&lt;p&gt;19.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncmypix&amp;nbsp;&lt;a href="http://code.google.com/p/syncmypix/"&gt;http://code.google.com/p/syncmypix/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;同步您的电话联系照片从Facebook朋友的个人资料图片&lt;/p&gt;&lt;p&gt;20.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libra-android&amp;nbsp;&lt;a href="http://code.google.com/p/libra-android/"&gt;http://code.google.com/p/libra-android/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;体重监视器&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;转自:&lt;a href="http://blog.csdn.net/dellheng/article/details/7170861"&gt;http://blog.csdn.net/dellheng/article/details/7170861&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2518173.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518173.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518159.html</id><title type="text">Google code android开源项目(三)</title><summary type="text">转自:http://blog.csdn.net/dellheng/article/details/71701761.sociallibhttp://code.google.com/p/sociallib/社交网络库，支持Facebook、Twitter、GoogleBuzz、LinkedIn2.android-lighthousehttp://code.google.com/p/android-lighthouse/android平台的Qt版本3.robotiumhttp://code.google.com/p/robotium/Android 平台上类似 Selenium 的集成测试工具4.</summary><published>2012-05-25T07:47:00Z</published><updated>2012-05-25T07:47:00Z</updated><author><name>凌阳教育 Leo Chin</name><uri>http://www.cnblogs.com/hnrainll/</uri></author><link rel="alternate" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518159.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518159.html"/><content type="html">&lt;p&gt;转自:&lt;a href="http://blog.csdn.net/dellheng/article/details/7170176"&gt;http://blog.csdn.net/dellheng/article/details/7170176&lt;/a&gt;&lt;/p&gt;&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sociallib&amp;nbsp;&lt;a href="http://code.google.com/p/sociallib/"&gt;http://code.google.com/p/sociallib/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;社交网络库，支持Facebook、Twitter、GoogleBuzz、LinkedIn&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-lighthouse&amp;nbsp;&lt;a href="http://code.google.com/p/android-lighthouse/"&gt;http://code.google.com/p/android-lighthouse/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android平台的Qt版本&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;robotium&amp;nbsp;&lt;a href="http://code.google.com/p/robotium/"&gt;http://code.google.com/p/robotium/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Android 平台上类似 Selenium 的集成测试工具&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-vnc-server&amp;nbsp;&lt;a href="http://code.google.com/p/android-vnc-server/"&gt;http://code.google.com/p/android-vnc-server/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;vnc server 电脑控制手机&lt;/p&gt;&lt;p&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;daily-money&amp;nbsp;&lt;a href="http://code.google.com/p/daily-money/"&gt;http://code.google.com/p/daily-money/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;每日记账本&lt;/p&gt;&lt;p&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pandahome&amp;nbsp;&lt;a href="http://code.google.com/p/pandahome/"&gt;http://code.google.com/p/pandahome/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;熊猫桌面&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;asmack&amp;nbsp;&lt;a href="http://code.google.com/p/asmack/"&gt;http://code.google.com/p/asmack/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Smack（XMPP）库的Android版本&lt;/p&gt;&lt;p&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gtalksms&amp;nbsp;&lt;a href="http://code.google.com/p/gtalksms/"&gt;http://code.google.com/p/gtalksms/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;通过GTalk/XMPP控制android手机&lt;/p&gt;&lt;p&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e3roid&amp;nbsp;&lt;a href="http://code.google.com/p/e3roid/"&gt;http://code.google.com/p/e3roid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2D OpenGL 游戏引擎&lt;/p&gt;&lt;p&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;aacdecoder-android&amp;nbsp;&lt;a href="http://code.google.com/p/aacdecoder-android/"&gt;http://code.google.com/p/aacdecoder-android/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;AAC解码器&lt;/p&gt;&lt;p&gt;11.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adosbox&amp;nbsp;&lt;a href="http://code.google.com/p/adosbox/"&gt;http://code.google.com/p/adosbox/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;DOS模拟器&lt;/p&gt;&lt;p&gt;12.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java-fighting-game-engine&amp;nbsp;&lt;a href="http://code.google.com/p/java-fighting-game-engine/"&gt;http://code.google.com/p/java-fighting-game-engine/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;格斗游戏引擎，支持android平台&lt;/p&gt;&lt;p&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keepassdroid&amp;nbsp;&lt;a href="http://code.google.com/p/keepassdroid/"&gt;http://code.google.com/p/keepassdroid/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;KeePass(一款密码管理工具)android版&lt;/p&gt;&lt;p&gt;14.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-binding&amp;nbsp;&lt;a href="http://code.google.com/p/android-binding/"&gt;http://code.google.com/p/android-binding/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;提供了一个通用的框架用来实现 Android 的视图部件跟数据模型进行绑定的功能，用来实现 Android 应用程序的 MVC 模式。&lt;/p&gt;&lt;p&gt;15.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android-sms&amp;nbsp;&lt;a href="http://code.google.com/p/android-sms/"&gt;http://code.google.com/p/android-sms/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;可以将短信备份到gmail&lt;/p&gt;&lt;p&gt;16.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tapsoffire&amp;nbsp;&lt;a href="http://code.google.com/p/tapsoffire/"&gt;http://code.google.com/p/tapsoffire/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;android版Frets On Fire（一个类似吉他英雄（Guitar Hero）把键盘当作吉他来弹的音乐游戏）&lt;/p&gt;&lt;img src="http://www.cnblogs.com/hnrainll/aggbug/2518159.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/hnrainll/archive/2012/05/25/2518159.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
