在Android中,我们可以使用任意的XML文件作为资源。
你可以从其生成的资源ID访问xml文件,可以通过它本地化这些资源XML文件。因此,你可以有效地在设备上编译和存储这些XML文件。
XML文件需要存储在 /res/xml
子目录下。
以下代码显示了一个名为 /res/xml/test.xml
的示例XML文件。
<root> <sub> Hello World from an xml sub element </sub> </root>
AAPT在将此XML文件放入应用程序包之前对其进行编译。
下面的代码显示了如何使用 XmlPullParser
来解析这些文件。
Resources res = activity.getResources(); XmlResourceParser xpp = res.getXml(R.xml.test); private String getEventsFromAnXMLFile(Activity activity) throws XmlPullParserException, IOException { StringBuffer sb = new StringBuffer(); Resources res = activity.getResources(); XmlResourceParser xpp = res.getXml(R.xml.test); xpp.next(); int eventType = xpp.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if(eventType == XmlPullParser.START_DOCUMENT) { System.out.println("Start document"); } else if(eventType == XmlPullParser.START_TAG) { System.out.println("Start tag "+xpp.getName()); } else if(eventType == XmlPullParser.END_TAG) { System.out.println("End tag "+xpp.getName()); } else if(eventType == XmlPullParser.TEXT) { System.out.println("Text "+xpp.getText()); } eventType = xpp.next(); } return sb.toString(); }
下面的代码显示了如何解析xml资源。
主Activity xml布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/selection" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="false" /> </LinearLayout>
res/xml/words.cml
<words> <word value="lorem" /> <word value="ipsum" /> <word value="dolor" /> <word value="sit" /> <word value="amet" /> <word value="consectetuer" /> <word value="adipiscing" /> <word value="elit" /> <word value="morbi" /> <word value="vel" /> <word value="ligula" /> <word value="vitae" /> <word value="arcu" /> <word value="aliquet" /> <word value="mollis" /> <word value="etiam" /> <word value="vel" /> <word value="erat" /> <word value="placerat" /> <word value="ante" /> <word value="porttitor" /> <word value="sodales" /> <word value="pellentesque" /> <word value="augue" /> <word value="purus" /> </words>
Java代码
/from www..cn Copyright (c) 2008-2009 CommonsWare, LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import android.app.Activity; import android.os.Bundle; import android.app.ListActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.io.InputStream; import java.util.ArrayList; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; public class MainActivity extends ListActivity { TextView selection; ArrayList<String> items=new ArrayList<String>(); @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); selection=(TextView)findViewById(R.id.selection); try { XmlPullParser xpp=getResources().getXml(R.xml.words); while (xpp.getEventType()!=XmlPullParser.END_DOCUMENT) { if (xpp.getEventType()==XmlPullParser.START_TAG) { if (xpp.getName().equals("word")) { items.add(xpp.getAttributeValue(0)); } } xpp.next(); } } catch (Throwable t) { Toast .makeText(this, "Request failed: "+t.toString(), 4000) .show(); } setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items)); } public void onListItemClick(ListView parent, View v, int position, long id) { selection.setText(items.get(position).toString()); } }
初始化 SparkSpark 编程的第一步是需要创建一个 SparkContext 对象,用来告诉 Spark 如何访问集群。在创建 SparkContext 之前,...
在YARN上运行Spark配置大部分为Spark on YARN模式提供的配置与其它部署模式提供的配置相同。下面这些是为Spark on YARN模式提供...
SparkRDD 持久化Spark最重要的一个功能是它可以通过各种操作(operations)持久化(或者缓存)一个集合到内存中。当你持久化一个...
Neo4j提供JAVA API以编程方式执行所有数据库操作。 它支持两种类型的API:Neo4j的原生的Java APINeo4j Cypher Java APINeo4j原生...
SpringDATA Neo4j模块Spring DATA模块适用于为各种数据库实现DAO层。 它通过避免一些不需要的工件(DAO实现)来改进应用程序开发...
MongoDB教程 -MongoDB 删除集合MongoDB的 db.collectionName.drop()用于从数据库中删除集合。语法drop()命令的语法如下db.COLLEC...
SQLite 的 DELETE 查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都...
Redis Sunionstore 命令Redis 集合(Set)Redis Sunionstore 命令将给定集合的并集存储在指定的集合 destination 中。如...
Redis Punsubscribe 命令 Redis 发布订阅 Redis Punsubscribe 命令用于退订所有给定模式的频道。语法 redis Punsubscribe 命令基...
目录61.1. 索引的基本 API 结构61.2. 索引访问方法函数61.3. 索引扫描61.4. 索引锁定考虑61.5. 索引唯一性检查61.6. 索引开销估...